iOS以编程方式更改uiview布局

时间:2013-03-26 22:15:36

标签: ios objective-c cocoa-touch uiview uikit

我的iOS应用程序上有一个页面,基于下图,如下所示。

  • 深灰色框=导航栏
  • 浅灰色的盒子= UIView(用于演示,带有一些漂亮的阴影等)
  • 黑色边框= UIView(再次,有漂亮的阴影,不同的背景颜色等)
  • 2个文字字段
  • 粉红色框=事件后要显示的另一个视图。

layout

目前,我正在使用initWithFrame布局所有内容,并明确设置每个项目的框架,我知道这可能不是很好(我是ios开发的新手,所以请指出我正确的方向)。< / p>

我想要实现的是,当某些文本输入到第二个文本字段时,粉红色框将显示,并且超视图将正确响应,并在新字段周围进行布局。

我对事件本身没有任何问题,我可以轻松地依次改变每个UIView的框架,但我觉得这是错误的,并且会喜欢一些指针。我最终还是喜欢粉红色的框来制作动画,因此包含了用它制作动画的视图。

我希望我已经彻底解释了自己。非常感谢

1 个答案:

答案 0 :(得分:0)

如果你有事件触发,你想在后面运行动画,这是一个非常简单的事情。

- (void)myEventMethod:(id)sender {
  // Do your event stuff here
  // Animate the pink box into view
  // The below assumes the pink box is hidden behind the blackView and you'd like to drop it down 44 pixels over 0.3 seconds - hopefully correct - haven't tested
  // need to be careful as it'll move down 44px every time myEventMethod: is triggered
  [UIView animateWithDuration:0.3
                        delay:0.0
                      options:UIViewAnimationOptionCurveEaseIn
                   animations:^{
                   CGRect pinkboxEndFrame = CGRectMake(self.blackView.frame.origin.x, self.blackView.frame.origin.y + 44, self.pinkbox.frame.size.width, self.pinkbox.frame.size.height);
                   [self.pinkbox setFrame:pinkboxEndFrame];
                   }
                   completion:nil];

}

只需使用您想要对其他视图执行的任何其他动画更新上述内容。

有关动画视图的详细信息,请查看Apple的View Programming Guide