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

How to round an UIImageView with Autoresizing Masks?

大家好。 我正在创建一个 iOS 应用程序。其中我在 UITableView 单元格上有一个 ImageView。问题是每当我通过将它的高度或宽度除以 2 来创建一个椭圆形时,它就会变成圆形。虽然当我删除自动调整大小时它工作正常。有人可以在这里帮忙吗?

是的,你应该让你的 UIImageview 宽度和高度等于你的 UITableviewcell 的高度,然后将它除以二...

添加这个通用方法:

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

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

像这样传递您的图像视图:

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

注意:应用它并适当地自动调整大小,否则它将无法正常工作 谢谢

我发现 UITableViewCell 在单元格中显示圆形图像时会出现与大小 classes 相关的奇怪影响。如果您对 iPad 和 iPhone 上的图像使用不同的大小限制,情况尤其如此。为了解决这个问题,我将以下内容添加到我的单元格 class。 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]];
}

代码假设图像是方形的,它需要这样才能工作。