ios – 为什么CGSize类型的cornerRadii参数在 – [UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]?

前端之家收集整理的这篇文章主要介绍了ios – 为什么CGSize类型的cornerRadii参数在 – [UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法理解这一点…我正在玩

– [UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]:

bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10,10,80,80)
                                   byRoundingCorners:(UIRectCornerBottomLeft)
                                         cornerRadii:CGSizeMake(20,20)];

它的工作原理如预期.但是如果我替换cornerRadii:CGSizeMake(20,20)with,say,cornerRadii:CGSizeMake(20,5)或CGSizeMake(20,40),没有区别.

为什么是cornerRadii CGSize而不是CGFloat呢?什么是CGSize.height?

任何想法和建议将非常感谢:)

解决方法

我现在可以确认这是iOS 6之后引入的一个bug.我有一个旧的4s运行iOS 6.1.在那台机器上,这段代码
path = [UIBezierPath bezierPathWithRoundedRect: bounds
    byRoundingCorners: UIRectCornerTopLeft | UIRectCornerTopRight
   cornerRadii: CGSizeMake(bounds.size.width/2,bounds.size.width/6)
 ];

创建一个椭圆形角的圆角矩形.曲线的上半部分曲线更加平缓,并且像您所期望的那样更加尖锐:

这是iOS 6.1的图像,其角落应该是:

而从iOS 8.1.2运行时,这是相同的代码.

看起来在iOS> = 7.0,它忽略了指定半径的高度,并使用角度椭圆的高度和宽度的宽度值,这迫使它们始终是四分之一圆.

我已经记录了苹果bug记者系统的错误.我们会看看他们说什么我建议所有看到这个问题的人也报告一个bug.他们得到的报道越多,它们就越有可能修复它.

猜你在找的iOS相关文章