UiView带有左上角和右上角以及边框

时间:2012-01-23 22:17:59

标签: ios uiview border rounded-corners

我有一个UIView。我只需要将它的左上角和右上角四舍五入,并且还要有一个1点的边框宽度。

有什么想法吗?

由于

5 个答案:

答案 0 :(得分: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. 自行绘制圆角
  3. 使用面具(此处为CALayer的@property maskhttp://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html

答案 1 :(得分: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;

答案 2 :(得分:1)

你可以使用像这样的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];

答案 3 :(得分:0)

使用CALayer并尝试本教程更多信息。 http://nachbaur.com/blog/rendering-views-using-calayer-part-1

答案 4 :(得分:0)

一个非常简单快速的解决方案:

  1. 设置圆角半径,使其以正常方式绘制所有四个圆角

  2. 对于您不想要舍入的每个角落:

    • 创建一个小方形UIView,边长等于角半径
    • 将其添加为主视图的子视图(带圆角的视图)
    • 将其定位,使其恰好位于角落
    • 将其背景颜色设置为与主视图的背景相同
  3. 不一定是最优雅的解决方案,但只需要一分钟来编写代码!