我要实现在界面上有一个UIView随着上面的那个UIView的高度改变而往下移,实现过程中出现了许多的问题。下面是我的界面布局:第一个红框是那个会伸缩的UIView,我要向里面添加一些数据,会出现多行,所以它的高度会变大。
下面这个框是一个UIView,这个UIView里面包含了框住的那些控件,它应该是要随着上面的那个UIView的高度改变而往下移的。
我写的一段代码实现了让下面的UIView往下移,但是它移动后,里面的控件都变形且位移了。下面是我写的下移UIView的代码:// 首先获取UIView的原始frame
CGRect rect = self.infoView.frame;
// 将这个UIView从视图中移出
[self.infoView removeFromSuperview];
// 改变它的y坐标
CGFloat infoY = self.numView.frame.size.height + self.numView.frame.origin.y + 8.0f;
rect.origin.y = infoY;
self.infoView.frame = rect;
// 将更改了y坐标后的UIView重新添加到视图中
[self.myScroll addSubview:self.infoView];
下面是没有添加这段代码的运行出来的效果,可以看出部分空间内重叠了:
接下来是添加了代码后运行出来的效果,可以看出下移了的那个UIView中的控件都变形而且位移了:
这些控件的低层是一个ScrollView,当下移得很多,移出了界面时,我的ScrollView好像也无效了,不可以上下滚动了。
该问题急待解决啊!!!求各位大神指教啊!!!

解决方案 »

  1.   

    你可以直接移view的位置,比如说center ....完全没必要把它removeFromSuperView再add..
      

  2.   

    可以看出你的scrollView横向是可以移动的,而且设定了View的autosizing模式,否则不会发生变形。
    而且可能你所说的view原来不属于scrollview的子View
    你得重新规划一下画面结构。
    还有不用删除了再添加,直接修改Frame就好了。
    然后view向下移动时,别忘了改变scrollView的contentsize,否则就会导致你所说的scrollView不起作用
      

  3.   

    我使用了另外一种ViewController实现了我想要的效果。
    我所说的那个View是属于ScrollView的子View的,只是我直接改变该View的frame(就只是改了y坐标的),界面显示出来的效果确实这个view并没有下移啊
      

  4.   

    正常肯定是可以的,至于你的为什么不行。
    很抱歉,凭你的描述确实分析不出来。
    不要直接改变viewcontroller的view为scrollview。这样做,动做好像是不正常的。
    应该在view上再加一个scrollview