在旋转期间保持一致的梯度

时间:2016-06-29 22:48:37

标签: ios swift rotation gradient cagradientlayer

我有UIView作为UIViewController背景的渐变。渐变代码位于drawRect的{​​{1}}中(如下所示)。该渐变视图通过自动布局连接到UIView视图(约束如下所示)。

渐变在纵向和横向都能正确显示,但旋转期间,白色背景非常清晰可见(视角在转弯处,在角落里)并且非常刺耳。< / p>

问题:如何在旋转过程中保持渐变?

渐变代码(在我的子类UIViewController中):

UIView

约束代码(在 override func drawRect(rect: CGRect) { gradient.frame = self.bounds gradient.opacity = 0.5 gradient.colors = colors self.layer.insertSublayer(gradient, atIndex: 0) } 的{​​{1}}中):

viewDidLoad

1 个答案:

答案 0 :(得分:-1)

问题在于你对这个渐变的整个方法是错误的。你做了两件不该做的事情:

  • 您将渐变添加为图层。调整视图大小时,不会自动调整图层大小。但旋转后视图 调整大小;这就是轮换的全部内容。

  • 您在drawRect:中添加了一个图层。这是疯狂的,因为那不是drawRect:应该做的事情,也因为它被称为很多次,所以你最终可以结束。

相反,将渐变绘制到UIImage中,只需让self.view成为(或包含)显示渐变图像的UIImageView。那个渐变会和其他一切一起旋转,一切都会很好。