UIView动画shadowPath不跟随

时间:2018-07-18 17:24:26

标签: ios swift uiview ios-animations

我有一个带有UIView功能的expand。 当我调用此函数时,UIView保持居中,并且扩大了它的宽度。

问题是我的UIView有一个shadow和一个shadowPath。每当我扩展它时,阴影都会立即扩展到视图在动画结束时获得的最大宽度,而不是遵循边界。

func expand() {
    guard self.expanded == false else {
        return
    }

    let originX = self.frame.origin.x
    let originY = self.frame.origin.y
    let originWidth = self.frame.width
    let originHeight = self.frame.height
    let newWidth = self.frame.width * 2

    let newRect = CGRect(x: originX - ((newWidth - originWidth) / 2), y: originY, width: newWidth, height: originHeight)

    self.expanded = true

    UIView.animate(withDuration: 0.4, animations: {
        self.frame = newRect
        self.layoutIfNeeded()
    }) { (completed) in
    }
}


override func layoutSubviews() {
    super.layoutSubviews()
    self.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, cornerRadius: self.layer.cornerRadius).cgPath
}

1 个答案:

答案 0 :(得分:1)

UIView显式(但私下)选择隐式设置其图层属性中的哪一个,而shadowPath不是其中之一。您必须自己制作动画。