在iPhone 6和6 Plus中,在ImageView上设置Corner Radius是不完美的

时间:2015-07-02 07:23:59

标签: ios objective-c uiview uiimageview

我在我的应用中使用imageView,我将cornerRadius设置为循环播放。一切正常,但是当我在iPhone 6和6 Plus中验证它时,边缘处的某些部分似乎被切断了,例如。下图中的顶部:

enter image description here

请注意,我还没有添加3x启动图片,因此应用程序实际上显示为原始版本的缩放版本。
我假设这个问题是因为缩放因子而发生的。即我在代码中指定的宽度不是我在设备中实际看到的宽度。此外,我认为如果我使用autoLayout,这将被修复。

我的假设是否正确?如果没有,请提供解释和解决方案。谢谢:)!

EDIT1:

我的imageView大小为35 x 35。 我将角半径设置如下:

[commentCell.profileImageView.layer setCornerRadius:17.5];
[commentCell.profileImageView.layer setMasksToBounds:YES];

EDIT2:

浮点似乎不是这样,因为我尝试了相同的框架尺寸36 x 36和角半径18

2 个答案:

答案 0 :(得分:1)

您的假设是正确的,但也有另一种解决方案:

[commentCell.profileImageView.layer setCornerRadius:profileImageView.frame.size.width/2];

答案 1 :(得分:1)

它也发生在我身上,可能是由于浮动四舍五入 你可以尝试两件事:

  • 使用CAShapeLayer
  • 屏蔽图像视图图层
  • 以圆圈重绘图像

CAShapeLayer *circleClipLayer=[CAShapeLayer layer];
UIBezierPath * circlePath = [UIBezierPath bezierPath];
[circlePath addArcWithCenter:yourcenter radius:yourradius startAngle:0 endAngle:2 * M_PI clockwise:YES];
circleClipLayer.path = circlePath.CGPath;
yourimageview.layer.mask=circleClipLayer;