UiView с верхними левыми и правыми закругленными углами и границей

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

Есть идеи?

благодаря

Попробуй это:

#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. Используйте маску (маску @property mask CALayer здесь: http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html )

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; 

вы можете достичь этого, используя этот путь:

 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]; 

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

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

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

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

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

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

  • Как создать пользовательскую границу вокруг UIView?
  • установить границу метки в iphone
  • Пунктирная / пунктирная граница для UITextView / UITextField
  • Interesting Posts
    Давайте будем гением компьютера.