setRadiusCorner только в нижней части представления - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть вид с закругленными углами. Я хочу сделать его закругленным как раз в двух нижних углах вида. Как я могу это сделать?

Это мой код, который делает закругленные углы для вида:

CALayer *myLayer = moreInfoView.layer;
[myLayer setCornerRadius:20.0];
[view.layer setMasksToBounds:YES];

Возможно ли это?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 октября 2013

Округление только углов UIRectCornerBottomLeft и UIRectCornerBottomRight:

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:yourView.bounds
                                           byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight)
                                                 cornerRadii:CGSizeMake(5.0, 5.0)];

CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = yourView.bounds;
layer.path = path.CGPath;
yourView.layer.mask = layer;
0 голосов
/ 12 декабря 2011

Не думайте, что вы можете сделать это с помощью CALayer легко - вы можете создать подкласс NSView и создать простую процедуру перерисовки.Может быть проще всего использовать http://www.cocoadev.com/index.pl?RoundedRectangles в качестве отправной точки (после удаления двух кривых Безье, которые вы не хотите округлять), а затем выполните простое:

- (void)drawRect:(CGRect)rect
{
    self.layer.masksToBounds = NO;
    self.layer.shadowColor = [[UIColor xxxx] CGColor];
    self.layer.shadowOffset = CGSizeMake(0,2);
    self.layer.shadowRadius = ...
    self.layer.shadowOpacity = ...

    UIBezierPath *path = [UIBezierPath bezierPathWithPartiallyRoundedRect:rect
           byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(20, 20)];
    [[UIColor blackColor] setFill or Stroke];

    [path stroke or fill];
}

В приведенной выше ссылке -Второй упрощенный пример упрощает вашу жизнь - вы можете просто сделать два из них 'path lineToPoint: ..'.

...