andreamazz / andreamazz/AMPopTip

Top border gets cut-out

Aperta
#220 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Swift
Stelle
3.3k
Fork
449
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.