为啥cornerRadius的最大值不是矩形的一半?用 UIBezierPath 快速绘制roundedRect
Posted
技术标签:
【中文标题】为啥cornerRadius的最大值不是矩形的一半?用 UIBezierPath 快速绘制roundedRect【英文标题】:Why the max value of cornerRadius is not half of the rectangle? Drawing roundedRect with UIBezierPath in swift为什么cornerRadius的最大值不是矩形的一半?用 UIBezierPath 快速绘制roundedRect 【发布时间】:2020-10-26 07:52:26 【问题描述】:正如文件所说,cornerRadius 不能大于一半宽度,但在我的代码中,圆形矩形只有宽度的 1/3 变成了圆形,不知道为什么?需要帮助
文档:https://developer.apple.com/documentation/uikit/uibezierpath/1624356-init
角半径: 每个角椭圆的半径。值为 0 会生成一个没有圆角的矩形。大于矩形宽度或高度一半的值被适当地限制为宽度或高度的一半。
var path = UIBezierPath(roundedRect: CGRect(x: 50, y: 200, width: 94, height: 94), cornerRadius: 31)
path.stroke()
path = UIBezierPath(roundedRect: CGRect(x: 50, y: 300, width: 94, height: 94), cornerRadius: 30.5)
path.stroke()
path = UIBezierPath(roundedRect: CGRect(x: 50, y: 400, width: 94, height: 94), cornerRadius: 31.5)
path.stroke()
【问题讨论】:
【参考方案1】:我认为这是因为类型转换错误。
试试这个。
let xCor: CGFloat = 50.0
let width: CGFloat = 94.0
let height: CGFloat = 94.0
let cornerRadius: CGFloat = width / 3.0
var path = UIBezierPath(roundedRect: CGRect(x: xCor, y: 200.0, width: width, height: height), cornerRadius: cornerRadius)
path.stroke()
path = UIBezierPath(roundedRect: CGRect(x: xCor, y: 300.0, width: width, height: height), cornerRadius: cornerRadius)
path.stroke()
path = UIBezierPath(roundedRect: CGRect(x: xCor, y: 400.0, width: width, height: height), cornerRadius: cornerRadius)
path.stroke()
PS:没有通过运行此代码进行检查,如果这里有任何问题,请告诉我。
【讨论】:
以上是关于为啥cornerRadius的最大值不是矩形的一半?用 UIBezierPath 快速绘制roundedRect的主要内容,如果未能解决你的问题,请参考以下文章
如何为 UIBezierPath 提供cornerRadius
为啥 MultiBinding 不适用于 CornerRadius
为啥cornerRadius.width/2 不给我一个完美的圆?
c_cpp 创建一个带有圆角矩形背景的UILabel,就像在iPhone Mail应用程序中一样。 (比使用UILabel.layer.cornerRadius快得多)