首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAShapeLayer更改lineWidth导致崩溃

CAShapeLayer更改lineWidth导致崩溃
EN

Stack Overflow用户
提问于 2019-01-25 02:18:35
回答 1查看 168关注 0票数 0

因此,我有一个很好的子类,它可以在某个时候调整大小,然后我调用updateFrame(),将lineWidth更改为任何值都会导致崩溃。我需要的是能够在没有动画的情况下改变lineWidth (即时)。

https://cdn1.imggmi.com/uploads/2019/1/24/a93765689e524d45116f942ce734275e-full.png

https://cdn1.imggmi.com/uploads/2019/1/24/12a880d41cff1f69ef6bd2f974033627-full.png

代码语言:javascript
复制
class OvalLayer: CAShapeLayer {

func updateFrame(_ with: CGRect) {
    let newFrame = with.insetBy(dx: frame.size.width * 0.07, dy: frame.size.height * 0.07)
    path = UIBezierPath(ovalIn: newFrame).cgPath
    lineWidth = (min(frame.size.width, frame.size.height) / 50) //if i remove this line it will be ok
}

init(frame: CGRect) {
    super.init()
    self.frame = frame
    let newFrame = frame.insetBy(dx: frame.size.width * 0.07, dy: frame.size.height * 0.07)
    lineWidth = (min(frame.size.width, frame.size.height) / 50)
    strokeColor = UIColor.white.cgColor
    fillColor = UIColor.clear.cgColor
    path = UIBezierPath(ovalIn: newFrame).cgPath
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}
EN

回答 1

Stack Overflow用户

发布于 2019-01-25 02:54:40

是的,一分钟后,我写了一个解决方案。我认为当你更新图层属性时,它会从它本身重新初始化(这只是我的猜测)

代码语言:javascript
复制
override init(layer: Any) {
    super.init(layer: layer)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54353069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档