2012-01-23 2 views

ответ

11

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

#import <QuartzCore/QuartzCore.h> 

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

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

  1. рисовать закругленный угол самостоятельно, используя CoreGraphics (How to draw a rounded rectangle in Core Graphics/Quartz 2D?) или
  2. Используйте маску (CALayer в @property mask здесь: http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html)
+0

Спасибо за ваш ответ! Мне не нужны все углы округлые, только верхние. Применение слоя маски не будет делать трюк (вид будет иметь borner, но не на закругленных углах). Я попробую # 1. – user1078065

+0

# 2 решение работало – user1078065

0

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

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

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

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

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

+0

Согласовано, не изящно, но легко и отлично работает! Благодаря!! –

1

вы можете достичь этого, используя путь Бейзер как это -

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

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; 
Смежные вопросы