andreamazz / andreamazz/AMPopTip

Top border gets cut-out

Offen
#220 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Swift
Sterne
3.3k
Forks
449
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

**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](https://user-images.githubusercontent.com/7842501/129785699-6c9ee932-f9cd-4c56-b855-f8d582610382.png)

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).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.