frame不是在代码执行的时候实时调整的,你要在viewDidLayoutSubviews里看

解决方案 »

  1.   

    你打印之前已经把 frame设成self.view.bounds了,设完之后再打印这两个值,那肯定是一样的啊。
    少了64是因为你之前设置frame用的是屏幕宽高,但是你打印之前又把frame设置成了self.view的bounds。你自己修改了值啊,
    再说一个view的frame和bounds值是不一样的.
      

  2.   

    不是,self.view的frame楼主并没有设置,如果一个vc在NavigationController里,那么NavigationController会适时地改变vc的view的frame,viewDidLoad方法里打印的frame是NavigationController还未调整的,可以理解为这样:
    // 在NavigationController 的push 里
    vc.view.frame = xxxx;
    当访问vc的view属性时,如果view在此之前是nil的,那么则会调用viewDidLoad方法,然后才是更新view的frame,所以才会出现在同一个vc里,在不同的方法里打印出来的view.frame会不一样,TabBarController也是类似