iOS中视图变换旋转使图像渲染效果无效

Posted

技术标签:

【中文标题】iOS中视图变换旋转使图像渲染效果无效【英文标题】:View transform rotation nullify image rendering effects in iOS 【发布时间】:2017-08-17 09:54:52 【问题描述】:

我创建了一个UIButton 如下(带有阴影属性的圆形按钮没什么花哨的):

    let button = UIButton(type: .system)
    button.backgroundColor = UIColor(hexString: "4267B2")
    button.tintColor = .white
    button.setImage(#imageLiteral(resourceName: "add").withRenderingMode(.alwaysTemplate), for: .normal)
    button.addTarget(self, action: #selector(handleClick), for: .touchUpInside)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.layer.cornerRadius = 32
    button.layer.shadowColor = UIColor.darkGray.cgColor
    button.layer.shadowRadius = 6
    button.layer.shadowOpacity = 0.6
    button.layer.shadowOffset = CGSize.zero

目的是看起来像一个添加按钮,点击它会旋转形成一个十字按钮。

func handleClick() 
    button.isSelected = !newPostButton.isSelected
    let rotationDirection: CGFloat = button.isSelected ? 1: -1
    UIView.animate(withDuration: 0.5) 
        self.button.transform = self.button.transform.rotated(by: (rotationDirection * .pi/4))
    

我遇到的问题是当动画发生旋转时,旋转效果很好,但为按钮.withRendering: 提供的图像无效,如下所示:

有解决办法吗? (请不要使用代码库)我在网上搜索过,但没有一个有类似的问题。

【问题讨论】:

【参考方案1】:

您可以将按钮类型设置为.custom 而不是.system。这应该可以解决您的问题。

【讨论】:

谢谢,您节省了很多时间。

以上是关于iOS中视图变换旋转使图像渲染效果无效的主要内容,如果未能解决你的问题,请参考以下文章

变换使尺寸不同

iOS,iOS9 +提供原生模糊视图效果?

图像效果后发光 - 如何在渲染后保存发光渲染缓冲区

iOS,iOS9+ 提供的原生模糊视图效果?

我的渲染技术进阶之旅基于Filament渲染引擎绘制一个不停旋转的彩色矩形

我的渲染技术进阶之旅基于Filament渲染引擎绘制一个不停旋转的彩色矩形