如何在旋转/动画 UI 视图的底部保留阴影
我的投影代码如下
extension UIView {
func dropShadow(cornerRadius : CGFloat, heightOffset : Int) {
self.layer.masksToBounds = false
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOpacity = 1
self.layer.shadowOffset = CGSize(width: 0, height: heightOffset)
self.layer.shadowRadius = 5
//remove bezier to enable corner radius
// self.layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
self.layer.cornerRadius = cornerRadius
self.layer.shouldRasterize = true
}
}
然后在我的视图控制器中,我在 uiview 动画中调用该方法
隐藏
UIView.animate(withDuration: 0.5, animations: {
for views in self.menuView.subviews {
views.alpha = 0
}
self.view.layoutIfNeeded()
self.moreButton.transform = tr
self.moreButton.dropShadow(cornerRadius: self.moreButton.layer.cornerRadius, heightOffset: 5)
}
以显示
UIView.animate(withDuration: 0.5, animations: {
self.moreButton.dropShadow(cornerRadius: self.moreButton.layer.cornerRadius, heightOffset: -5)
// menuV.center = self.menuView.center
menuV.center.y = -30
menuV.alpha = 1
self.view.layoutIfNeeded()
self.moreButton.transform = tr
}, completion: { (complete) in
})
结果是阴影跳到顶部或底部,然后旋转。
我基本上需要它在动画过程中始终保持在图层的底部。
有人可以帮忙并描述我可能做错了什么吗
问候
托马斯
找到答案: -
与其将按钮作为一个整体旋转,不如只旋转按钮内的图像是有意义的
所以代码应该是这样的
self.myButton.imageView?.transform = tr