解决方案 »

  1.   

    本帖最后由 hitwhylz 于 2014-10-04 10:25:22 编辑
      

  2.   

    或者是你的self.mainView的autoresizingMask做了修改。你可以po一下, 看看它的autoresize属性。
    比如我做了个测试。
    self.view 是默认的view, mView 是我用代码写出来的, self.myView是用拖出来的控件, 它们都是UIView类型。
    po的结果如下:
    (lldb) po self.view
    <UIView: 0x109a4e670; frame = (0 0; 320 568); autoresize = RM+BM; layer = <CALayer: 0x109a4d1e0>>(lldb) po self.myVIew
    <UIView: 0x109a4e130; frame = (0 84; 320 400); autoresize = W+H; layer = <CALayer: 0x109a4d3d0>>(lldb) po mView
    <UIView: 0x109a4be40; frame = (0 0; 320 284); layer = <CALayer: 0x109a0e760>>可以发现它们的autoresize属性是不同的。
    其中, self.view 和mView 是可以正常共同执行动画的。   拖出来的控件self.myView则会出现你的那种问题。
    原因就是自动布局机制了。这里的self.myView默认被加上了这样的布局属性
    autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    所以会出现问题。 你可以试试把第二句self.mainView.center = CGPointMake(300,400);去掉, 你会发现它的动画会一蹭一蹭的。 因为它时刻再自动布局, 会调节宽高。如果原因是这样,可以选择关掉storyboard的自动布局功能
    如果不是这种原因.. 那就不清楚了
      

  3.   

    谢谢你的回答,我后来试了一下,如果用storyboard 拖出的UIView,就会有这个问题,如果是手写代码就没有问题,但我还是想用storyboard,不知道怎么解决?