我在setFrame时没有调整UIScrollView的大小

时间:2014-11-18 21:46:32

标签: ios objective-c xcode6

我有一个UIScrollView,我根据csv文件动态添加标签和文本字段。它最初在我的视图上设置为具有0,340,100,100的帧。我在我的代码中计算新帧尝试使用下面的代码更新该大小。

[_svFields setScrollEnabled:YES];
[_svFields setUserInteractionEnabled:YES];
[_svFields setFrame:CGRectMake(frameX, frameY, frameWidth, frameHeight)];
[_svFields setContentSize:CGSizeMake(frameWidth, y)];

它正确地将标签和文本字段添加到滚动视图,但是滚动视图本身不会更新到新帧,它仍然是0,340,100,100。我试过它[_svFields setNeedsDisplay];更新框架后,它仍然没有做任何事情。我在setFrame上停止的值是frameX = 0,frameY = 319,frameWidth = 750,frameHeight = 403,y = 2152。

任何帮助都会很棒。

谢谢,

编辑:我目前正在使用不同的大小类,因此禁用Autolayout不是一个选项。如果这是感谢帮助的唯一方式。我首先设置大小的原因是因为这些类不断地将我的UIScrollView框架重置为0,0,0,0而不是我在移动和更改视图中的其他对象时给出的大小。有没有人知道这个问题?

Edit2:我找到了解决方法。通过为UIScrollView将setTranslatesAutoresizingMaskIntoContraits设置为YES,它不会自动调整大小并允许使用我的设置大小。 [_svFields setTranslatesAutoresizingMastIntoContraints:YES]在设置框架坐标之前。

2 个答案:

答案 0 :(得分:0)

禁用UIViewController的autolayout属性。

答案 1 :(得分:0)

实际上,使用自动布局的scrollViews非常容易。

您可以从这个模板项目开始:

https://github.com/annabd351/AutolayoutTemplate