Округлые угловые изображения

Я пытался делать идеально сформированные круглые изображения с не квадратными изображениями. Я попытался сделать это с

[self.photoView.layer setCornerRadius:50.0f];
[self.photoView.layer setMasksToBounds:YES];

Это будет примерно так:

Я хочу сделать его совершенно совершенным круговым.

Режим содержимого PhotoView установлен на Aspect Fill, его высота и ширина фиксированы до 80x80 с автозапуском. Я не мог понять.

Я сделал круговые изображения с обрезкой и масштабированием их, но также хочу добавить к нему границу, таким образом мне нужно воссоздать новое uiimage для рисования границ в нем. Это дорогая вещь. Я хочу использовать слой photoView для этого.

Любая помощь приветствуется.

5 ответов

Вы должны установить угол радиуса половины width/height (только для квадратного объекта), чтобы создать круглый вид.

[self.photoView.layer setCornerRadius:self.photoView.frame.size.height/2];

или установите его на 40.0f потому что высота и ширина 40x40.


Попробуйте этот код, угловой радиус должен быть половиной width или height предоставленного фотоснимка, и он должен иметь квадратную форму.

Таким образом, код выглядит следующим образом:

[self.photoView.layer setCornerRadius:CGRectGetHeight(self.photoView.frame)/2];
[self.photoView.layer setMasksToBounds:YES];


попробуйте #import заголовок QuartzCore #import и играть со свойством layer UIImageView.

self.photoView.layer.cornerRadius = self.photoView.frame.size.height/2;
self.photoView.clipsToBounds = YES;


Вы можете добиться этого, используя слой и маску:

CGFloat imWidth = photoView.frame.size.width;
CGFloat imHeight = photoView.frame.size.height;
CGFloat minSize = imWidth < imHeight ? imWidth : imHeight;
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = CGRectMake(imWidth * 0.5f - minSize * 0.5f, imHeight * 0.5f - minSize * 0.5f, minSize, minSize);
maskLayer.path = CGPathCreateWithEllipseInRect(CGRectMake(0, 0, minSize, minSize), nil);
photoView.layer.mask = maskLayer;

Это обрезает фотоизображение по кругу внутри photoview.frame. Вы можете изменить minSize на: CGFloat maxSize = imWidth > imHeight? imWidth: imHeight; CGFloat maxSize = imWidth > imHeight? imWidth: imHeight; если вы хотите другой эффект.


попробуйте этот код,

быстрый код:

объявлять

@IBOutlet weak var circleView: UIView!

viewDidLoad или любой метод:

circleView.layer.cornerRadius = circleView.frame.width/2
circleView.layer.borderWidth = 10
circleView.layer.borderColor = UIColor.blackColor().CGColor

объектно-C-код:

объявить UIImageView

@property (weak, nonatomic) IBOutlet UIImageView *myimageview;

viewDidLoad или любой метод,

myimageview.layer.cornerRadius = myimageview.frame.size.width/2;
myimageview.layer.masksToBounds = YES;
myimageview.layer.borderWidth = 2.0;
myimageview.layer.borderColor = [UIColor blackColor].CGColor;

licensed under cc by-sa 3.0 with attribution.