2015-09-08 52 views
0

大家好。 我正在创建一个iOS应用程序。其中我有一个UITableView单元格上的ImageView。问题是每当我通过将它的高度或宽度除以2来创建一个椭圆时,它就是圆形的。虽然当我删除自动调整其工作正常。任何人都可以在这里帮忙。如何使用Autoresizing Masks对UIImageView进行四舍五入?

+0

imageView的高度和宽度应该相等,如50x50。 –

+1

是啊Sushil其72x72。 – Shane

回答

1

我已经发现的UITableViewCell,你得到奇怪的,当你表现出细胞圆形图片影响相关尺寸的类。如果您在iPad上对iPhone上的图像使用不同的尺寸约束,情况尤其如此。为了解决这个问题,我将以下内容添加到我的单元格类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]]; 
} 

代码假设图像是正方形的,它需要工作。

+0

感谢您的回复@Rory,我已经实现了您的代码,并且能够在iPhone 4,5上正常工作,但是当我在iPhone 6上检查它时,它的宽度和高度会发生变化,并且边距有点大。 'width = 95'和'height = 81',那么怎样才能让它变圆。 – Shane

+0

工作好的家伙,谢谢。 – Shane

0

是比你应该给你的UIImageView宽度和高度等于你的UITableViewCell的高度,比除以二...

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)) 

注:应用它瓦特第i个适当的调整自动否则将无法正常工作 感谢