移动视图

时间:2010-09-13 11:35:26

标签: iphone objective-c

好的,这可能听起来很简单,但不知怎的,我无法使这个功能起作用。

- (void)setViewMovedUp:(BOOL)movedUp {

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];

    CGRect rect = self.view.frame;
    NSLog(@"%f",self.view.frame.size.height);
    if (movedUp)
    {
        NSLog(@"test Moved Up");
        rect.origin.y += 60;
        rect.size.height -= 300;
    }
    self.view.frame = rect ;
    NSLog(@"%f after:",self.view.frame.size.height);

    [UIView commitAnimations];

}

所有的NSLog都打印结果很好并且出现“Test Moved Up”,所以我知道上游没有错。

此函数是我的MainViewController(管理我的Window应用程序的根视图)的实现文件的一部分。

我想我必须打电话: self.view.frame ,对吗?

没有出现错误或警告,但尽管正确打印出日志,它仍然没有移动..

编辑,这是IB中的层次结构:

alt text


再次编辑:我实际上想知道我是否可以移动该视图,如果它们位于层次结构的顶部,我们是否可以移动视图?然后会在后面揭示什么?

1 个答案:

答案 0 :(得分:0)

尝试仅删除三个动画消息。

如果它移动(我认为它不会,但......)

  1. 尝试传入@“moveup”作为beginAnimations的第一个参数
  2. 尝试使用setAnimationCurve
  3. 如果不移动

    1. 另一个视图中的视图是否为此视图设置了布局?
    2. 你是在主线程中调用它(不是在后台线程中)
    3. 编辑:更新

      您不应该这样做,但请尝试

      [self.view setNeedsDisplay];
      

      如果不起作用,请在窗口中尝试。更改框架应该自动执行此操作。