我有一个带有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
}
答案 0 :(得分:1)
UIView
显式(但私下)选择隐式设置其图层属性中的哪一个,而shadowPath
不是其中之一。您必须自己制作动画。