为什么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 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落,并使用不同的值来看看会发生什么。