2015-09-08 102 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個適當的調整自動否則將無法正常工作 感謝