视图控制器完成加载时更改UIView背景颜色

时间:2016-10-27 14:18:25

标签: ios swift uiview

我正在通过另一个视图控制器以模态方式加载视图控制器,我正在尝试使用以下方法更改背景颜色:

 override func viewDidLoad() {
    super.viewDidLoad()

    transparentBG.backgroundColor? = UIColor.black.withAlphaComponent(0.4)

    // transparentBG is a UIView defined in storyboard
}

当视图动画到位置(向上滑动)时,它保持我设置的alpha值。但是一旦它到达屏幕的顶部,它就会删除alpha组件并将颜色更改为看起来像alpha组件的颜色,所以就像灰色一样,但没有透明度,如下图所示。

enter image description here

如果完成加载后,是否仍然需要维护alpha组件?

3 个答案:

答案 0 :(得分:1)

第一步:将其更改为overFullScreen演示文稿。

第二步:没有第二步。

答案 1 :(得分:1)

只需在viewContriller上设置presentaion样式

[myViewcontroller setModalPresentationStyle:UIModalPresentationCustom];
[myViewcontroller setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self.navigationController presentViewController:myViewcontroller animated:true completion:nil];

答案 2 :(得分:0)

正在发生的事情是保留了alpha,但是一旦动画完成就删除了之前的视图。

您可以采取几种方法。

  1. 拍摄上一个视图的屏幕截图,并将其作为背景插入新视图中。查看drawViewHierarchyInRect函数。您可以在新视图控制器的init方法中获取屏幕截图,然后在viewDidLoad中将其设置为背景图像。

  2. 另一种方法是将叠加层添加为现有视图甚至窗口本身的子视图。

  3. 我已成功使用这两种方法。