【问题标题】:UiView with top left and right rounded corners and border具有左上角和右上角圆角和边框的 UiView
【发布时间】:2012-02-17 06:16:39
【问题描述】:

我有一个 UIView。我只需要将它的左上角和右上角圆角化,并且边框宽度为 1 磅。

有什么想法吗?

谢谢

【问题讨论】:

    标签: ios uiview border rounded-corners


    【解决方案1】:

    试试这个:

    #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

    【讨论】:

    • 感谢您的回复!我不需要把所有的角落都弄圆,只需要顶部的角落。应用蒙版层不会起到作用。(视图将有一个边框,但不是在圆角上)。我会尝试#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;
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

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

            • 创建一个边等于角半径的小方形 UIView
            • 将其添加为主视图的子视图(带圆角的那个)
            • 定位它,使其正好位于拐角处
            • 将其背景颜色设置为与主视图的背景相同

          不一定是最优雅的解决方案,但只需一分钟即可编写代码!

          【讨论】:

            猜你喜欢
            • 2013-05-10
            • 1970-01-01
            • 2021-08-21
            • 2021-10-30
            • 1970-01-01
            • 1970-01-01
            • 2020-05-07
            • 1970-01-01
            • 2017-11-12
            相关资源
            最近更新 更多