Я пытаюсь получить хороший круглый угол на UIImageView. Я нашел реализованный следующий код, который отлично работает, если изображение является квадратом. Проблема в том, что мой imageView - это прямоугольная фотография, иногда портретная, иногда пейзажная. Этот код обрезает углы, но не дает плавного изгиба, когда одна сторона изображения длиннее другой. Есть идеи? Также применяется ли значение с плавающей точкой в setCornerRadius к изображению в виде процента сторон или просто числа пикселей?
// 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;
}
тогда, на мой взгляд, WillAppear я сделал это
// 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];