我无法弄明白......我正在玩
-[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]
如此:
bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 80, 80)
byRoundingCorners:(UIRectCornerBottomLeft)
cornerRadii:CGSizeMake(20, 20)];
它按预期工作。但是,如果我将cornerRadii:CGSizeMake(20,20)替换为cornerRadii:CGSizeMake(20, 5)
或CGSizeMake(20, 40)
,则没有区别。
为什么cornerRadii CGSize
而不是CGFloat
呢?什么是CGSize.height
?
非常感谢任何想法和建议:)
答案 0 :(得分:6)
我现在可以确认这是iOS 6之后引入的一个错误。我有一个运行iOS 6.1的旧4。在那台机器上,这段代码:
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记者系统的一个错误。我们会看到他们说的话。 我建议所有看到此问题的人也报告错误。他们获得的报告越多,就越有可能修复它。
答案 1 :(得分:3)
好吧,经过进一步的测试后,我终于发现它似乎是一个iOS 7的bug。正如预期的那样,iOS 6模拟器上的相同代码正确绘制。但是,iOS 7模拟器和iOS 7设备都存在这个问题并且绘制不正确。
我会提交一份错误报告,除非有人证明我错了,而且我有些遗漏。
答案 2 :(得分:1)
CGSize
参数允许水平和垂直平面上的角半径不同。即一个不对称的角落。
尝试打开不同的角落并使用不同的值来查看会发生什么。