如何使用Autoresizing Masks对UIImageView进行舍入?

时间:2015-09-08 09:33:09

标签: ios objective-c uitableview uiimageview

大家好。                我正在创建一个iOS应用程序。我在UITableView单元格上有一个ImageView。问题是每当我通过将它的高度或宽度除以2来创建一个椭圆形时它是圆形的。虽然当我删除autoresizing其工作正常。请有人帮忙吗?

3 个答案:

答案 0 :(得分:1)

我在UITableViewCell中发现,当您在单元格中显示圆形图像时,会出现与大小类相关的奇怪影响。如果您对iPad上的图像使用不同的尺寸限制,则情况尤其如此。要解决此问题,我将以下内容添加到我的单元类中。 self.myImageView是我希望成为圆形的细胞UIImageView。

如果在布局过程中发生变化,这也可以确保您在图像框中选择最新的更改。

- (void) layoutSubviews
{
    [super layoutSubviews];

    //
    // Make the image round using the latest frame size.
    //
    CALayer *l=[self.myImageView layer];
    [l setMasksToBounds:YES];
    [l setCornerRadius:self.myImageView.frame.size.width/2];

    // No border just now
    [l setBorderWidth:0.0];
    [l setBorderColor:[[UIColor blackColor] CGColor]];
}

代码假定图像是正方形,需要它才能工作。

答案 1 :(得分:0)

是的,你应该让你的UIImageview宽度和高度等于你的 UITableviewcell 的高度,而不是把它除以2 ......

答案 2 :(得分:0)

添加此通用方法:

func addRoundedCorner(viewToRound:UImageView, radius:CGFloat) {

    var layer:CALayer = viewToRound.layer;
    layer.cornerRadius=radius
    layer.masksToBounds = true
} //F.E.

像这样传递你的imageview:

self.addRoundedCorner(YourUImageView, radius:CGFloat(YourUImageView.frame.size.width/2.0))

注意:使用正确的自动调整大小来应用它,否则它将无法正常工作 感谢