我是iPhone / iPad开发的新手。 你可以帮我编程一下吗?我想以编程方式扩展/折叠UIView。
这个可展开/可折叠的视图将包含一些文本字段和标签,它们应该随该视图出现和消失
答案 0 :(得分:12)
假设您在UIViewController类中有一个UIView实例,如下所示:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, w1, h1)];
[self.view addSubview:view];
根据要求设置视图可见性,就像我在这里做的那样..当控制器加载它的视图时,我没有显示视图..
[view setHidden:YES];
保持一个标志来检查视图实例的可见性..让我说isViewVisible
是我的标志来检查视图的可见性..我在开始时将它设置为NO ..
isHelpViewVisible = NO;
我在这里编写了一个动作方法(viewClicked)来展开和折叠视图对象,将此动作方法提供给按钮实例,它将起作用。
- (void)viewClicked:(id)sender {
if (!isViewVisible) {
isViewVisible = YES;
[view setHidden:NO];
[UIView beginAnimations:@"animationOff" context:NULL];
[UIView setAnimationDuration:1.3f];
[view setFrame:CGRectMake(x, y, w1, h1)];
[UIView commitAnimations];
} else {
isViewVisible = NO;
[view setHidden:NO];
[UIView beginAnimations:@"animationOff" context:NULL];
[UIView setAnimationDuration:1.3f];
[view setFrame:CGRectMake(x, y, width, hight)];
[UIView commitAnimations];
}
}
并将文本域和标签对象作为子视图添加到视图对象中,并将动画设置为这些对象..它将起作用。
答案 1 :(得分:3)
取代以上内容:
[UIView beginAnimations:@"animationOff" context:NULL];
[UIView setAnimationDuration:1.3f];
[view setFrame:CGRectMake(x, y, w1, h1)];
[UIView commitAnimations];
使用新方式制作动画:
[UIView animateWithDuration:1.3f animations:^{
self.frame = CGRectMake( x1, x2, w1, h1);
} completion:^(BOOL finished) {
// this gives us a nice callback when it finishes the animation :)
}];
答案 2 :(得分:1)
要在其父级中更改UIView的大小/位置,只需更改其frame属性:
CGRect newFrame = myView.frame;
newFrame.origin.x = newX;
newFrame.origin.y = newY;
newFrame.size.width = newWidth;
newFrame.size.height = newHeight;
myView.frame = newFrame;
答案 3 :(得分:0)
你可以试试这个
CGRect frame = [currentView frame];
frame.size.width = 999;//Some value
frame.size.height = 444;//some value
[currentView setFrame:frame];
无论何时想要增加/减少视图大小,都可以执行此操作