Как мне закруглить только два верхних угла UILabel? - PullRequest
4 голосов
/ 27 января 2012

Я знаю, что в iOS 3.0+ я могу использовать

 label.layer.cornerRadius = xxx;

, чтобы округлить все четыре угла UILabel (как подкласс UIView), но я хочу округлить только два верхних угла меткии держите нижние углы под прямым углом.

Есть ли способ сделать это с помощью UILabel?Другие решения предполагают пользовательский UIView, а не UILabel.

Ответы [ 3 ]

27 голосов
/ 21 ноября 2013

Думал, что выложу полный код с включенным BezierPath.

CGRect bounds = label.bounds;
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds
                                                                   byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
                                                                         cornerRadii:CGSizeMake(5.0, 5.0)];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = bounds;
maskLayer.path = maskPath.CGPath;

label.layer.mask = maskLayer;

Для Swift 4.0:

let bounds: CGRect = label.bounds
let maskPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: ([.topLeft, .topRight]), cornerRadii: CGSize(width: 5.0, height: 5.0))
let maskLayer = CAShapeLayer()
maskLayer.frame = bounds
maskLayer.path = maskPath.cgPath
label.layer.mask = maskLayer
16 голосов
/ 27 января 2012

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

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = maskPath.CGPath;
label.layer.mask = maskLayer;

, где maskPath - это UIBezierPath, настроенный с использованием bezierPathWithRoundedRect:byRoundingCorners:cornerRadii

1 голос
/ 27 января 2012

Я проверил ссылку на класс для UIView & UILabel и ее слоев, но не смог найти никакого способа сделать это с помощью средств, предоставленных iOS.

Вы можете сделать одну вещь, создать UIView и применить к ней закругленные углы. Теперь добавьте UILabel в качестве подпредставления к этому UIView и расположите его таким образом, чтобы нижние 2 закругленных угла были покрыты меткой. Таким образом, вы получите нужный эффект ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...