我无法理解这一点…我正在玩
– [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.他们得到的报道越多,它们就越有可能修复它.