好的,我将一个简单的UIViewController()。视图添加到另一个ViewControllers子视图。
看起来有点像这样
public func add(Content vc:UIViewController) {
self.addChildViewController(vc)
vc.view.frame = menuView.bounds
menuView.addSubview(vc.view)
vc.didMove(toParentViewController: self)
}
menuView就是这样构建的
public lazy var menuView: UIView = {
let view = UIView(frame: CGRect(x: -self.menuWidth, y: 0, width: self.menuWidth, height: self.view.frame.height))
view.backgroundColor = UIColor.blue
view.layer.shadowPath = UIBezierPath(rect: view.bounds).cgPath
view.layer.shadowOpacity = 0
view.layer.shadowOffset = CGSize(width: 2, height: 0)
view.layer.shadowRadius = 5
return view
}()
控制器持有menuView本身就是这样构建的
let sidemenu = SidemenuController()
sidemenu.add(Content: UIViewController())
addController(vc: sidemenu)
通过GestureRecognizer,我应该可以在屏幕上移动menuView。 问题是,只要我调用add()函数,我的视图就不会再改变它的框架,尽管所有命中测试都能正常工作。
通过设置包含偏移
的视图框架来完成重新定位menuView.frame = CGRect(x: -menuWidth+_offset, y: 0, width: menuView.frame.width, height: menuView.frame.height)
Debug Navigator始终在我的menuView中显示其原始位置,但在menuView上没有子视图。我做错了什么?