解决方案 »

  1.   

    如果你的xib没有启用Auto Layout的话,用一个IBOutlet 引用这个ImageView,还是可以setFrame 的。
    如果你的xib有启用Auto Layout,代码中的setFrame 就会失效(Auto Layout会在运行时通过约束更新frame),此时你想在代码中修改frame的话,只能通过更新约束来实现(约束也可以用IBOutlet引用,然后更新它的constant就行了)。
    上面提到了两种情况,前者不能在xib中按比例设置宽高,后者可以,具体做法就是在ImageView加一个连向自己的约束,First Item 选择宽,Second Item选择高,Multiplier里填1:0.6就行了。
      

  2.   

    在xib中如果使用autolayout 给uiimageview约束了位置,那么在代码中再设置uiimageview  的frame就不会再起作用。 反之的话,你还是可以通过设置frame来调整uimageview的位置的。
    如果使用auotlayout的方式,在xib中还是可以设置宽高比的。见下图:这里假设的宽高比为2:1
    (1)先将view的frame调整为2:1,比如width=200,height=100;
    (2)勾选Aspect Ratio