代码之家  ›  专栏  ›  技术社区  ›  Ramesh

UIView不显示圆形

  •  1
  • Ramesh  · 技术社区  · 7 年前

    用于制作循环 UIView 我正在使用 cornerRadius 所有物

    我有一个尺寸为79*158的UIView。

    redView.layer.cornerRadius = redView.frame.size.height/2
    redView.layer.masksToBounds = true
    

    它显示的是省略号而不是圆:

    It shows elipse instead of circle

    是否有任何解决方法,或者它是否仅适用于方形(例如UIView(100*100))?

    如果它动态调整大小,我就可以了。

    6 回复  |  直到 7 年前
        1
  •  3
  •   Uday Babariya    7 年前

    使用此。。。

        func makeCircle (view: UIView) {
            view.clipsToBounds = true
            let height = view.frame.size.height
            let width = view.frame.size.width
            let newHeight = min(height, width) // use "max" if you want big circle
    
            var rectFrame = view.frame
            rectFrame.size.height = newHeight
            rectFrame.size.width = newHeight
            view.frame = rectFrame
            view.layer.cornerRadius = newHeight/2
        }
    

    使用方式如下:

    @IBOutlet var rectView: UIView!
    
    override func viewDidLoad() {
            super.viewDidLoad()
    
            makeCircle(view: rectView)
        }
    
        2
  •  0
  •   Community CDub    4 年前

    您有一个尺寸为79*158的UIView。所以这是错误的。你应该 高度和宽度相同 用于将视图精确舍入为圆形。

    E、 g。

    redView.frame.size.height = 79.0
    redView.frame.size.width = 79.0
    

    redView.frame.size.height = 158.0
    redView.frame.size.width = 158.0
    

    并应用角半径,如:

      redView.clipsToBounds = true
      redView.layer.cornerRadius = redView.frame.size.height / 2.0
    

    结果:

    enter image description here

    笔记 :如果使用自动布局,请检查约束。确保图幅不变。

        3
  •  0
  •   Adeel Miraj    7 年前

    如果使用约束,则更改视图的帧/边界不是一个好主意。相反,您应该执行以下操作。

    1. 如果视图包含在 UIViewController 然后设置 cornerRadius 在里面 viewDidLayoutSubviews 方法
    2. 如果视图本身是 UIView 设置 拐角半径 在里面 layoutSubviews 方法
        4
  •  0
  •   Bijender Singh Shekhawat    7 年前

    只有乡绅的视角才能构成一个完美的圆圈。例如,如果您的视图大小为(10*10),(50*50),(100*100)等,则您的视图将成为完美的squire,否则不会。

        5
  •  0
  •   SPatel mash    7 年前

    使用IBDesignable,您可以在没有项目运行的情况下在情节提要框中显示。XIB公司 #简单的方式

    第1步。 子类UIView:

    @IBDesignable class RoundedCornerView: UIView {
        @IBInspectable var borderWidth:CGFloat = 2 {
            didSet {
                layer.borderWidth = borderWidth
            }
        }
    
    @IBInspectable var borderColor:UIColor = UIColor.orangeGradientLight {
        didSet {
            layer.borderColor = borderColor.cgColor
        }
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        layer.cornerRadius = frame.height/2
        layer.masksToBounds = true
        layer.borderColor = borderColor.cgColor
        layer.borderWidth = borderWidth
    }
    }
    

    第2步。 在标识检查器中设置自定义类:

    enter image description here

        6
  •  0
  •   Nguyen Hoan    7 年前

    不能
    尝试调整大小 UIView 至方形:79*79或158*158

    并设置:

    redView.layer.cornerRadius = redView.frame.size.height/2