自定义@IBDesignable UIButton使Xcode崩溃

问题描述

我想为Swift中的iOS项目设计一个带有阴影的圆形按钮。所以我想出了以下自定义按钮类:

import UIKit

@IBDesignable class MainButton: UIButton {
    private var shadowLayer: CAShapeLayer!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        let image = createBackgroundImage()
        setBackgroundImage(image,for: UIControl.State.normal)
        clipsToBounds = true
        
        contentEdgeInsets = UIEdgeInsets(top: 5,left: 20,bottom: 5,right: 20)
        
        layer.masksToBounds = false
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOffset = CGSize(width: 0,height: 3)
        layer.shadowOpacity = 0.2
        layer.shadowRadius = 6
    }
    
    func createBackgroundImage() -> UIImage {
        let rect = CGRect(x: 0,y: 0,width: frame.width,height: frame.height)
        UIGraphicsBeginImageContextWithOptions(frame.size,false,0)
        let color = UIColor.white
        color.setFill()
        UIBezierPath(roundedRect: rect,cornerRadius: frame.height * 0.5).addClip()
        color.setFill()
        UIRectFill(rect)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
}

在我的情节提要中为按钮设置此类后,“ IBDEsignablesAgent-iOS”进程将占用我将近100%的CPU,Xcode会自动将其挂起。此行为使得几乎不可能正确调试问题。

我可以肯定我以错误的顺序或错误的方法做某事。但是我不知道如何解决。希望这里有人可以为我指明正确的方向。

谢谢, 詹斯

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)