Bar*_*bek 19 uikit ios uibezierpath
我无法弄明白......我正在玩
-[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:] 因此:
bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 80, 80)
byRoundingCorners:(UIRectCornerBottomLeft)
cornerRadii:CGSizeMake(20, 20)];
Run Code Online (Sandbox Code Playgroud)
它按预期工作.但是,如果我用,比方说,cornerRadii:CGSizeMake(20, 5)或者替换cornerRadii:CGSizeMake(20,20)CGSizeMake(20, 40),则没有区别.
为什么是cornerRadii CGSize而不是CGFloat呢?什么是CGSize.height?
任何想法和建议将不胜感激:)

我现在可以确认这是iOS 6之后引入的一个错误.我有一个运行iOS 6.1的旧4.在那台机器上,这段代码:
path = [UIBezierPath bezierPathWithRoundedRect: bounds
byRoundingCorners: UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii: CGSizeMake(bounds.size.width/2, bounds.size.width/6)
];
Run Code Online (Sandbox Code Playgroud)
创建一个圆角矩形,边角为椭圆形.曲线顶部的曲线更加渐进,两侧更加锐利,如您所料:
这是iOS 6.1图像,应该是角落:

以下是从iOS 8.1.2运行时相同的代码:

看起来在iOS> = 7.0时,它会忽略指定半径的高度,并使用角度椭圆的高度和宽度的宽度值,这会强制它们始终为四分之一圆.
我在苹果的bug报告系统上记录了一个错误.我们会看到他们说的话.我建议所有看到此问题的人也报告错误.他们获得的报告越多,他们就越有可能修复它.
好吧,经过进一步测试我终于发现这似乎是iOS 7的一个bug。正如预期的那样,相同的代码在 iOS 6 模拟器上正确绘制。然而,iOS 7模拟器和iOS 7设备都有这个问题并且绘制不正确。
我将提交一份错误报告,除非有人证明我错了并且我遗漏了一些东西。
| 归档时间: |
|
| 查看次数: |
5598 次 |
| 最近记录: |