Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在iPhone 6和6 Plus中,在ImageView上设置角半径是不完美的_Ios_Objective C_Uiview_Uiimageview - Fatal编程技术网

Ios 在iPhone 6和6 Plus中,在ImageView上设置角半径是不完美的

Ios 在iPhone 6和6 Plus中,在ImageView上设置角半径是不完美的,ios,objective-c,uiview,uiimageview,Ios,Objective C,Uiview,Uiimageview,我正在我的应用程序中使用imageViews,我将corneradius设置为圆形。所有这些都很好,但当我在iPhone 6和6 Plus中验证时,边缘的一些部分似乎被切断了,例如下图中的顶部: 请注意,我没有添加3x启动图像,因此该应用程序实际上显示为原始应用程序的缩放版本。 我假设这个问题的发生是因为比例因子。i、 e.我在代码中指定的宽度不是我在设备中实际看到的宽度。此外,如果我使用autoLayout,我假设这将得到修复 我的假设正确吗?如果没有,请提供解释和解决方案。谢谢:) EDI

我正在我的应用程序中使用
imageView
s,我将
corneradius
设置为圆形。所有这些都很好,但当我在iPhone 6和6 Plus中验证时,边缘的一些部分似乎被切断了,例如下图中的顶部:

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

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

EDIT1:

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

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


浮点似乎不是这样,因为我尝试了相同的帧大小
36 x 36
和角半径
18
您的假设是正确的,但是还有另一个解决方案:

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

这也发生在我身上,可能是由于浮动舍入。
您可以尝试两种方法:

  • 使用Cashape图层遮罩图像视图图层
  • 将图像重新绘制成圆形
L


在这里添加一些代码。所以,任何人都可以判断。请检查编辑。不幸的是,这并不能解决问题。哦,你可以试试下面答案中提到的那个。我试过了,但这不起作用。另外,它必须是
circlePath
而不是第3行中的
bezierPath
,对吗?我已经尝试了我的一个代码,它正在工作,注意计算准确的中心CAShapeLayer*circleClipLayer=[CAShapeLayer];UIBezierPath*circlePath=[UIBezierPath bezierPath];[circlePath addArcWithCenter:CGPointMake(CGRectGetMidX(imageview.bounds),CGRectGetMidY(imageview.bounds))半径:imageview.bounds.size.width/2 startAngle:0 endAngle:2*M_PI顺时针方向:是];circleClipLayer.path=circlePath.CGPath;imageview.layer.mask=circleClipLayer;是的。我也是这样做的。你确定你在iphone6或6plus上试过吗?你没用过自动布局吗?你还没有添加3倍启动图像吗?我正在使用autolayout,我在两个模拟器上都尝试过,我有一个3倍图像,我建议你在添加maskI之前检查视图帧,在应用遮罩之前检查帧。我也检查了窗框和屏幕。但它都显示了缩放版本的相同宽度。使用自动布局解决了这个问题。我在问题中已提及这点。请再核对一下这个问题。
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;