Skip to content

Top border gets cut-out #220

Description

@gchiacchio

Describe the bug
By setting a border and showing with .up direction will render half of of the top border

To Reproduce
My settings

        popTip = PopTip()
        popTip.shouldDismissOnTap = false
        popTip.shouldDismissOnTapOutside = false
        popTip.shouldDismissOnSwipeOutside = false
        popTip.bubbleOffset = 0
        popTip.edgeInsets = UIEdgeInsets(
            top: 0,
            left: 8,
            bottom: 0,
            right: 8)
        popTip.bubbleColor = .white
        popTip.borderColor = .textGrey750
        popTip.borderWidth = 2
        popTip.cornerRadius = 12
        popTip.arrowRadius = 2

calling it later with .up will cut-out half of the top border.

Expected behavior
Top border should be properly rendered

Screenshots
image

I've tracked the issue down to this piece of code in PopTip+Draw.swift (lines 83-88):

      // 7: Top left arc
      path.addArc(withCenter: CGPoint(x: baloonFrame.minX + radius + borderWidth, y: baloonFrame.minY + radius), radius:radius, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 1.5, clockwise: true)
      // 8: Top line
      path.addLine(to: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY))
      // 9: Top right arc
      path.addArc(withCenter: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY + radius), radius:radius, startAngle: CGFloat.pi * 1.5, endAngle: 0, clockwise:true)

Looks like is not accounting for the borderWidth. The stroke will be applied right in the edge of the path, so half inside of the balloon, half outside. That way, the path should account for the outer part of the border stroke.
From UIBezierPath.fill() docs

The painted region includes the pixels right up to, but not including, the path line itself. For paths with large line widths, this can result in overlap between the fill region and the stroked path (which is itself centered on the path line).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions