andreamazz / andreamazz/AMPopTip

Top border gets cut-out

オープン
#220 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Swift
スター
3.3k
フォーク
449
PR マージ指標
30日以内にマージされた PR はありません

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。