我在故事板的UIView
内创建了一个UIScrollView
,UIView
以上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”。
答案 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”提供的答案都是正确的。