Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIView不显示圆形_Ios_Swift_Rounded Corners - Fatal编程技术网

Ios UIView不显示圆形

Ios UIView不显示圆形,ios,swift,rounded-corners,Ios,Swift,Rounded Corners,对于制作圆形ui视图我使用cornerRadius属性 我有一个尺寸为79*158的UIView redView.layer.cornerRadius = redView.frame.size.height/2 redView.layer.masksToBounds = true 它显示省略号而不是圆: 是否有任何解决方法,或者它是否仅适用于方形(例如UIView(100*100)) 如果它动态调整大小,我可以。不能。 尝试将视图调整为正方形:79*79或158*158 并设置: redVi

对于制作圆形
ui视图
我使用
cornerRadius
属性

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

redView.layer.cornerRadius = redView.frame.size.height/2
redView.layer.masksToBounds = true
它显示省略号而不是圆:

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

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

不能。
尝试将视图调整为正方形:79*79或158*158

并设置:

redView.layer.cornerRadius = redView.frame.size.height/2
用这个

    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)
    }

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

例如

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
结果:


注意:如果使用自动布局,也要检查约束。确保图幅不会更改。

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

  • 如果视图包含在
    UIViewController
    中,则在
    viewDidLayoutSubviews
    方法中设置
    cornerRadius
  • 如果视图本身是
    UIView
    的子类,则在
    layoutSubviews
    方法中设置
    corneradius

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

    使用IBDesignable,您可以在storyboard ox.XIB#simple way

    步骤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。在identity inspector中设置自定义类:


    矩形视图如何变成圆形?你需要一些数学知识。要形成一个圆形视图,你必须先将其创建为正方形。我们不能使中心适合吗?或收缩等?如果视图高于宽,请使用
    width/2
    而不是
    height/2
    。好的!,是否有任何解决方法,如使其中心适合/AspectFit?如果它动态调整大小,我就可以了。