UIView圆角 - Swift 2.0?

4
我会尝试将一些项目更新到Swift 2.0版本。我有一个视图,它的左上角是圆角。在Swift版本小于1.2时,一切正常,但现在,没有圆角了。
没有警告,也没有错误,只是没有圆角了。
这就是在Swift版本小于1.2时的工作方式。
    let maskPath = UIBezierPath(roundedRect: contentView.bounds,byRoundingCorners: .TopLeft, cornerRadii: CGSize(width: 10.0, height: 10.0))
    let maskLayer = CAShapeLayer(layer: maskPath)
    maskLayer.frame = contentView.bounds
    maskLayer.path = maskPath.CGPath
    contentView.layer.mask = maskLayer

有人知道这里出了什么问题吗?我在文档中没有找到任何更改。

2个回答

6

这段 Swift 2.0-2.1 的代码没有问题。您确定在此代码片段之前或之后没有其他影响您视图的内容吗?

这是一个快速 Playground,其中包含您的代码:

enter image description here


嗯,愚蠢的是,我又连接到了Outlet,现在它可以工作了。非常奇怪。之前已经检查过多次了。有时候真觉得7.0版本的Xcode还是有点问题的呢 ;) 在playground中先检查一下是个好主意!谢谢你的回答! - derdida

2

Swift 4.0 - 5.0

您可以使用我创建的简单类,在Storyboard中直接创建UIView并添加圆角。

您可以在这里找到该类。

最初的回答

import Foundation
import UIKit

@IBDesignable class SwiftRoundView: UIView {

    @IBInspectable fileprivate var borderColor: UIColor = .white { didSet { self.layer.borderColor = self.borderColor.cgColor } }
    @IBInspectable fileprivate var borderWidth: CGFloat = 0.00 { didSet { self.layer.borderWidth = self.borderWidth } }
    @IBInspectable fileprivate var cornerRadius: CGFloat = 0.00 { didSet { self.layer.cornerRadius = self.cornerRadius } }

    init(x: CGFloat = 0.0, y: CGFloat = 0.0, width: CGFloat, height: CGFloat, cornerRadius: CGFloat = 0.0, borderWidth: CGFloat = 0.0, borderColor: UIColor = .white) {
        self.cornerRadius = cornerRadius
        self.borderWidth = borderWidth
        self.borderColor = borderColor

        super.init(frame: CGRect(x: x, y: y, width: width, height: height))

        setupView()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }

    required init?(coder aDecoder: NSCoder) {
         super.init(coder: aDecoder)
         setupView()
    }

    fileprivate func setupView() {
        self.layer.cornerRadius = cornerRadius
        self.layer.borderWidth = borderWidth
        self.layer.borderColor = borderColor.cgColor
        self.clipsToBounds = true
    }
}

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