我想在UIImageView上獲得一個不錯的圓角。我發現一個實現了下面的代碼,如果圖像是方形的,它可以正常工作。問題是我的imageView是一張長方形的照片,有時候肖像有時候是風景。這段代碼削減了角點,但是當圖像的一邊比另一邊長時,不能給出平滑的曲線。有任何想法嗎?另外,setCornerRadius中的浮點數應用於圖像作爲邊的百分比還是直線像素數?如何在非方形上獲得光滑的圓角半徑Objective C UIImageView
// Get the Layer of any view
CALayer * l = [imageView layer];
[l setMasksToBounds:YES];
[l setCornerRadius:100.0];
這是所有感興趣的修復程序。
好了,在玩了一段時間後,我發現我需要調整imageView的大小以適合圖像。我實現了以下方法來設置幀大小。
- (CGRect)getScaleForFrameFromImage:(UIImage *)image
{
// get the bigger side of image to determine the shape then
// get the percentage we need to scale to to trim imageViewFrame
// so it fits image and sits in the space dedicated in main view for the image
float percentage;
float newWidth;
float newHeight;
float w = image.size.width;
float h = image.size.height;
if (w > h) {
// landscape
percentage = 280/w;
newWidth = w * percentage;
newHeight = h * percentage;;
}
else {
percentage = 208/h;
newWidth = w * percentage;
newHeight = h * percentage;
}
int xOrigin = 20 + (280 - newWidth)/2;
CGRect newFrame = CGRectMake(xOrigin, 160, newWidth, newHeight);
return newFrame;
}
然後在我的viewWillAppear中我這樣做
// set the imageFrame size
[imageView setFrame:[self getScaleForFrameFromImage:imageToDisplay]];
// Use that image to put on the screen in imageView
[imageView setImage:imageToDisplay];
// Get the Layer of imageView
CALayer * l = [imageView layer];
[l setMasksToBounds:YES];
[l setCornerRadius:10.0];
你能發表截圖嗎?我認爲cornerRadius屬性在矩形視圖上正常工作。 (這是一個像素計數順便說一句,不是一個百分比。) – 2012-03-22 14:45:15
好吧,所以我正在製作截圖張貼過程中,我想我看到了問題。當我拍了一張肖像東方照片時,我根本沒有找到圓角,但風景正在變得時髦翹曲的角落。我認爲它是因爲我的UIImage視圖的大小足以填充我認爲最大的區域,我希望圖像佔用。它也被設置爲填充IB的方面。我認爲代碼工作正常,只是我的圖像很少填充整個視圖。所以我想我應該看看@是如何調整視圖到當前圖像的大小?建議?我可恥仍然是一個新手;〜) – vichudson1 2012-03-22 14:58:33