2010-12-01 2 views
34

Из-за UIProgressHUD необходимо получить доступ к приватным api, , поэтому я надеюсь построить UIView с круглым углом и белой рамкой. я знаю, чтобы сделать угол раунд:UIView с круглым углом и белой рамкой

view.layer.cornerRadius = 5; 

Но как сделать UIView имеет круглый угол и белую границу в то же время?

Добро пожаловать любой комментарий

Благодарности Interdev

ответ

75

Используя один и тот же объект слоя:

view.layer.borderWidth = 1; 
view.layer.borderColor = [[UIColor whiteColor] CGColor]; 
11

Есть свойства границы в слое зрения, а также: например:

view.layer.borderWidth = 1; 
view.layer.borderColor = [UIColor redColor].CGColor; 
+2

CALayer является частью Core Animation, а не UIKit. Следовательно, требуется CGColor, а не UIColor. – MarkPowell

+1

О да, извините, я просто печатал это с моей головы. –

0
[view.layer setBorderWidth:2]; 

[view.layer setBorderColor:[[UIColor whiteColor]CGColor]]; 
4

код, чтобы получить закругленные углы и границы

#import <QuartzCore/QuartzCore.h> 
view.layer.cornerRadius = 10; 
view.layer.borderWidth = 1; 
view.layer.borderColor = [[UIColor whiteColor] CGColor]; 
6

Иногда радиус закругления с белой каймой не работает должным образом поэтому я использую UIBezierPath и CAShapeLayer.

Для сделать угловой радиус

UIBezierPath *maskPath; 
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.imageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = self.view.bounds; 
maskLayer.path = maskPath.CGPath; 
self.imageView.layer.mask = maskLayer; 

Для сделать границу белого

CAShapeLayer* borderShape = [CAShapeLayer layer]; 
borderShape.frame = self.imageView.bounds; 
borderShape.path = maskPath.CGPath; 
borderShape.strokeColor = [UIColor whiteColor].CGColor; 
borderShape.fillColor = nil; 
borderShape.lineWidth = 3; 
[self.imageView.layer addSublayer:borderShape]; 

Он будет работать. Надеюсь, эта помощь

+1

Использование .cornerRadius, .borderWidth и .borderColor вместе с .clipsToBounds, казалось, дало мне артефакт вокруг imageView, когда я хотел круглое изображение с белой рамкой. Это поставило вопрос для меня. – Undrea

5
view.layer.cornerRadius = 5; 
view.clipsToBounds = YES; 
view.layer.borderWidth = 1; 
view.layer.borderColor = [UIColor whiteColor].CGColor; 
Смежные вопросы