UiView с верхним левым и правым закругленными углами и границей - PullRequest
4 голосов
/ 24 января 2012

У меня есть UIView.Мне нужно сделать только его верхний левый и верхний правый углы округленными, а также иметь ширину границы в 1 точку.

Есть идеи?

Спасибо

Ответы [ 5 ]

11 голосов
/ 24 января 2012

Попробуйте:

#import <QuartzCore/QuartzCore.h>

view.layer.cornerRadius = 8.0;
view.layer.borderWidth = 1.0;
view.layer.borderColor = [UIColor blueColor].CGColor;

однако все ваши углы будут округлены.Если вы не хотите этого, есть два варианта:

  1. Нарисуйте закругленный угол самостоятельно, используя CoreGraphics ( Как нарисовать скругленный прямоугольник в Core Graphics / Quartz 2D? )или
  2. Используйте маску (CALayer @property mask здесь: http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html)
2 голосов
/ 02 февраля 2017

UIView С верхним левым, правым закругленными углами и тенью

#import <QuartzCore/QuartzCore.h>
backView.layer.shadowColor=[UIColor blackColor].CGColor;

backView.layer.masksToBounds = NO;

backView.layer.shadowOffset = CGSizeMake(0.0f, 1.0f);

backView.layer.shadowRadius = 3;

backView.layer.shadowOpacity = 0.8;

      CGFloat radius = 20.0;
    CGRect maskFrame = self.backView.bounds;
    maskFrame.size.height += radius;
    CALayer *maskLayer1 = [CALayer layer];
    maskLayer1.cornerRadius = radius;
    maskLayer1.backgroundColor = [UIColor blackColor].CGColor;
    maskLayer1.frame = maskFrame;
    self.backView.layer.mask = maskLayer1;
1 голос
/ 13 октября 2015

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

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

    [maskPath setLineWidth:1.0];
     //to give stroke color 
    [[UIColor colorWithRed:186.0/255.0 green:186.0/255.0 blue:186.0/255.0 alpha:1.0] setStroke];

    //to color your border
       [[UIColor colorWithRed:242.0/255.0 green:240.0/255.0 blue:240.0/255.0 alpha:1.0] setFill];       


    [maskPath fill];
    [maskPath stroke];
0 голосов
/ 19 сентября 2012

Очень простое и быстрое решение:

  1. установить радиус угла так, чтобы он рисовал все четыре угла, округленные в обычном порядке

  2. для каждого угла, который вы не хотите округлять:

    • создайте небольшой квадратный UIView со стороной, равной радиусу угла
    • , добавьте его как подпредставление основного вида (тот, у которогозакругленные углы)
    • расположите его так, чтобы он располагался точно за углом
    • установите цвет фона таким же, как фон основного вида

Не обязательно самое элегантное решение, но его код занимает всего минуту!

0 голосов
/ 24 января 2012

Используйте CALayer и попробуйте этот урок больше информации.http://nachbaur.com/blog/rendering-views-using-calayer-part-1

...