具有左上和右上圆角及边框的UiView

4
我有一个UIView。我需要将它的左上角和右上角圆角化,并且边框宽度为1个点。
有任何想法吗?
谢谢
5个回答

11

试试这个:

#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

谢谢您的回复!我只需要将顶部两个角变圆,不需要所有四个角都变圆。应用遮罩层无法解决问题(视图会有边框,但是圆角不会被处理)。我会尝试方法一。 - user1078065

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;

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

0
一个非常简单和快速的解决方案:
  1. 设置角半径,使其以普通方式绘制所有四个角为圆角

  2. 对于您不想要圆角的每个角:

    • 创建一个边长等于角半径的小正方形UIView
    • 将其作为主视图(带圆角的视图)的子视图添加
    • 将其定位到恰好悬停在角落的位置
    • 将其背景颜色设置为与主视图的背景相同
可能不是最优雅的解决方案,但只需要一分钟就可以编码完成!

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接