将帧设置为UIview,这是UIScrollview的子视图

时间:2013-09-04 05:35:08

标签: iphone ios6 uiscrollview

我在故事板的UIView内创建了一个UIScrollViewUIView以上UIScrollView内会有更多的视图,如label,imageview等。

我想以编程方式将框架设置为UIView。我尝试以编程方式使用 setFrame 函数设置框架,但它不适用于UIView内的UIScrollView

我见过类似的问题,但是到处都是以编程方式创建UIView,但是我想使用在故事板中创建的UIView并希望将框架设置为。

任何人都可以建议我,我该怎么做?

感谢。

Edit1:添加了代码

[myownview setFrame:CGRectMake(0, 50, 320, 110)];

myownview是在UIScrollView中添加的UIView,在viewDidLoad方法中写上面的代码。

EDIT2:

 NSString userText = @"Some long text which is multiple lines";

 CGSize constraint = CGSizeMake(200, 90000.0f);

 // Get the size of the text given the CGSize we just made as a constraint
 CGSize size = [userText sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:13] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];

 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,20, size.width, size.height)];
[myLabel setLineBreakMode:NSLineBreakByWordWrapping];
[myLabel setNumberOfLines:0];
myLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:13];
[myscrollView addSubview:myLabel];

[myownview setFrame:CGRectMake(0, myLabel.frame.origin.y+myLabel.frame.size.height+10, 320, 110)];

我已正确创建IBOutlets。

myscrollview frame is (0, 135, 320, 298) on storyborad

myownview frame is (0, 214, 320, 110) on storyborad inside myscrollview

我已将contentsize设置为myscrollview,如下所示

myscrollView.contentSize =  CGSizeMake(320, 600);

现在想要改变myownview的起源。

最不可能的条件是Autolayout “TRUE”

2 个答案:

答案 0 :(得分:2)

将该视图的出口从故事板转到相应的班级。

参考创建的视图,如: 但这里不需要再分配它。只需改变框架。

[self.newView setFrame:CGRectMake(0, 70, 320, 80)];

如果您设置的框架超出了滚动视图,则您无法看到该视图。

视图只会在滚动视图区域中显示。

答案 1 :(得分:1)

当Autolayout为True时,我已通过以编程方式将myownview添加到scrollview中来解决上述问题。

myownview = [[UIView alloc] initWithFrame:CGRectMake(0, myLabel.frame.origin.y+myLabel.frame.size.height+10, 320, 110);

[myscrollView addSubview:myownview];

myscrollView.contentSize =  CGSizeMake(320, myownview.frame.origin.y+myownview.frame.size.height+10);

否则,当Autolayout为False时,“eptdeveloper”和“preetam”提供的答案都是正确的。