簡體   English   中英

圓角不適用於除 iPhone XS max 和 XR 之外的所有模擬器

[英]Round corners is not working in all simulators except iPhone XS max and XR

我正在為我的收藏視圖單元格使用圓角,這在 iPhone XS Max 和 XR 中工作正常,但圓角在其他人中沒有顯示。 下面是我正在使用的代碼。


 class ButtonCollectionViewCell: UICollectionViewCell {

        @IBOutlet weak var buttonImage: UIImageView!
        @IBOutlet weak var buttonTitle: UILabel!

        @IBOutlet weak var cellBackGroundView: UIView!
        @IBOutlet weak var imageWidthContraint: NSLayoutConstraint!
        @IBOutlet weak var imageHeightContraint: NSLayoutConstraint!

        override func awakeFromNib() {
             super.awakeFromNib()
             self.applyShadow(shadowColor: UIColor.gray, shadowRadious: 4, shadowOpacity: 1)
           makeRoundedCorners()

        }

        func makeRoundedCorners() {
             cellBackGroundView.roundCorners(corners: .allCorners, radius: 15)
        }

        func setupImageSize(cellType : String){
            if cellType == "12" {
                imageWidthContraint.constant = 40
                imageHeightContraint.constant = 50
            }else if cellType == "13"{
                imageWidthContraint.constant = 62
                imageHeightContraint.constant = 34
            }
        }

    }

extension UIView {
    func roundCorners(corners: UIRectCorner, radius: CGFloat) {
        let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))

        let mask = CAShapeLayer()
        layer.mask = mask
        mask.path = path.cgPath

    }

    }

你可以試試這個

extension UIView {

    func roundCorners(radius: CGFloat) {

        self.layer.masksToBounds = true
        self.layer.cornerRadius = radius
    }
}

使用這樣的東西

cell.layer.cornerRadius = 10
cell.layer.masksToBounds = true

我不認為你需要unc roundCorners(corners: UIRectCorner, radius: CGFloat)

至於故障排除,我推薦以下步驟。

在您的模擬器中打印出cornerRadius ,在為它分配一個值之后。 就我而言,我無意中將 0 分配給了它。

(lldb) po style.cornerRadius
6.0

(lldb) po layer.cornerRadius
0.0

原因是我有一個拼寫錯誤的計算值,它分配了視圖的當前角半徑。

    var sytle: Style {
        .init(cornerRadius: layer.cornerRadius, bgColor: backgroundColor)
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM