【发布时间】:2018-08-24 18:25:57
【问题描述】:
我想要做的就是在 UIBarButtonItem 被点击时旋转它。
我关注了这个帖子Rotate UIBarButtonItem Swift,但它不起作用。
区别在于:
1- 我在加载视图时在运行时设置图像:
showHideBtn.image = showHeaderimage
2- 我的右栏按钮项目中有两个按钮:
这是我的代码:
@IBAction func rotateAction(_ sender: Any) {
if(!self.isVertical)
{
UIView.animate(withDuration: 0.2, animations: {
self.navigationItem.rightBarButtonItem?.customView?.transform = CGAffineTransform(rotationAngle: 90 * .pi / 180)
}, completion: { (finished) in
self.isVertical = true
})
}else{
UIView.animate(withDuration: 0.2, animations: {
self.navigationItem.rightBarButtonItem?.customView?.transform = CGAffineTransform.identity
}, completion: { (finished) in
self.isVertical = false
})
}
}
我做错了什么?
更新代码:
DispatchQueue.main.async {
if(!self.isVertical) {
UIView.animate(withDuration: 0.2, animations: {
self.navigationItem.rightBarButtonItem?.customView?.transform = CGAffineTransform(rotationAngle: 90 * .pi / 180)
}, completion: { (finished) in
self.isVertical = true
})
}else {
UIView.animate(withDuration: 0.2, animations: {
self.navigationItem.rightBarButtonItem?.customView?.transform = CGAffineTransform(rotationAngle: 90 * .pi / 180)
}, completion: { (finished) in
self.isVertical = false
})
} }
显示按钮属性:
【问题讨论】:
-
尝试在第一个 if 之前添加
DispatchQueue.main.async {并在最后一个 } 之前关闭它。我知道@IBAction是在主线程上调用的,但我最近看到很多人在更新@IBAction内的 UI 时遇到问题,并且通常在 main 修复它时调度它。 -
@IonescuVlad 我试过了,但它不起作用
-
什么不起作用?
-
@Koen UIBarButtonItem 没有旋转
-
您是否单步执行了代码?
标签: ios swift uibarbuttonitem