为什么CGSizetypes的cornerRadii参数在 – ?
我无法弄清楚这一点…我正在玩
-[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]
就像这样:
bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 80, 80) byRoundingCorners:(UIRectCornerBottomLeft) cornerRadii:CGSizeMake(20, 20)];
它按预期工作。 但是,如果我用cornerRadii:CGSizeMake( cornerRadii:CGSizeMake(20, 5)
或CGSizeMake(20, 40)
代替cornerRadii:CGSizeMake(20,20 CGSizeMake(20, 40)
,则没有区别。
为什么是cornerRadii CGSize
而不是CGFloat
呢? 什么是CGSize.height
?
任何想法和build议将不胜感激:)
我现在可以确认这是在iOS 6之后引入的一个错误。我有一个运行iOS 6.1的老4s。 在那台机器上,这个代码:
path = [UIBezierPath bezierPathWithRoundedRect: bounds byRoundingCorners: UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii: CGSizeMake(bounds.size.width/2, bounds.size.width/6) ];
创build一个椭圆形angular落的圆angular矩形。 曲线顶部的曲线更平缓,两边更清晰,如您所期望的那样:
这是iOS 6.1的形象,应该是这样的:
以下是从iOS 8.1.2运行时的相同代码:
看起来,在iOS> = 7.0上,它忽略了指定半径的高度,并使用angular度椭圆的高度和宽度的宽度值,这迫使它们始终为四分之一圆。
我已经logging了一个苹果bug记者系统的错误。 我们会看看他们说什么 我build议所有看到这个问题的人也报告一个bug。 他们得到的报告越多,他们修复的可能性就越大。
那么,经过进一步的testing,我终于发现它似乎是一个iOS 7的错误。 正如所料,iOS 6模拟器上的相同代码正确绘制。 但是,iOS 7模拟器和iOS 7设备都有这个问题,并且绘制不正确。
我会提交一个错误报告,除非有人certificate我错了,还有一些我错过了。
CGSize
参数允许水平和垂直平面上的拐angular半径不同。 即非对称的angular落。
尝试打开不同的angular落,并使用不同的值来看看会发生什么。