我正在使用UIPresentationController制作自定义动画。我试图做到这一点,以使当按钮按下时切换到下一个视图控制器时,显示的视图控制器将占用前一个视图控制器中UIViews之一的宽度。我需要帮助的是如何从我的UIPresentationController类访问UIView的宽度和高度。
在View Controller中:
@IBOutlet weak var buttonView: UIView!
func width() -> CGFloat {
return buttonView.frame.size.width
}
func height() -> CGFloat {
return buttonView.frame.size.height
}
在Presentation Controller中:
override func size(forChildContentContainer container: UIContentContainer, withParentContainerSize parentSize: CGSize) -> CGSize {
let vc = ViewController()
return CGSize(width: vc.width(), height: vc.height())
}
我目前遇到的错误是当我返回buttonView.frame.size.width或buttonView.frame.width时,它意外地返回nil作为可选值。但是,宽度不是可选值,如果我将其打印出来,它不会返回nil。它不允许我访问变量以在视图控制器范围之外使用。任何帮助表示赞赏。
答案 0 :(得分:0)
即使您初始化了视图控制器,按钮的iboutlet也尚未初始化。因此,当您调用width函数时,您正在访问一个非可选属性的nil。装入笔尖时,将初始化Iboutlet。
这是从另一个视图控制器访问视图的方法。
call IBOutlet UIButton from one class to another Viewcontroller
答案 1 :(得分:0)
在UIPresentationController的子类中,您可以执行以下操作:
if let myVc = presentingViewController as? MyCustomVc {
let myViewWidth = myVc.myCustomView.frame.width
}