我正在通过另一个视图控制器以模态方式加载视图控制器,我正在尝试使用以下方法更改背景颜色:
override func viewDidLoad() {
super.viewDidLoad()
transparentBG.backgroundColor? = UIColor.black.withAlphaComponent(0.4)
// transparentBG is a UIView defined in storyboard
}
当视图动画到位置(向上滑动)时,它保持我设置的alpha值。但是一旦它到达屏幕的顶部,它就会删除alpha组件并将颜色更改为看起来像alpha组件的颜色,所以就像灰色一样,但没有透明度,如下图所示。
如果完成加载后,是否仍然需要维护alpha组件?
答案 0 :(得分:1)
第一步:将其更改为overFullScreen
演示文稿。
第二步:没有第二步。
答案 1 :(得分:1)
只需在viewContriller上设置presentaion样式
[myViewcontroller setModalPresentationStyle:UIModalPresentationCustom];
[myViewcontroller setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self.navigationController presentViewController:myViewcontroller animated:true completion:nil];
答案 2 :(得分:0)
正在发生的事情是保留了alpha,但是一旦动画完成就删除了之前的视图。
您可以采取几种方法。
拍摄上一个视图的屏幕截图,并将其作为背景插入新视图中。查看drawViewHierarchyInRect函数。您可以在新视图控制器的init方法中获取屏幕截图,然后在viewDidLoad中将其设置为背景图像。
另一种方法是将叠加层添加为现有视图甚至窗口本身的子视图。
我已成功使用这两种方法。