为什么我不能在添加子视图时重置UIView的帧?

时间:2016-09-04 23:11:32

标签: ios swift uiview

好的,我将一个简单的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上没有子视图。我做错了什么?

0 个答案:

没有答案