可以使用UIView动画为包含的控制器设置动画吗?

时间:2013-02-25 03:40:43

标签: ios uiviewcontroller uiviewanimation

我有以下内容适用于UIImageView。我不确定UIView动画是否可以与包含的控制器一起使用?我知道我正在为视图的框架制作动画,但不确定这是否适用(下面的代码只是概念验证)。但即使这样,下面也没有用。任何想法为什么不呢?

事先提前

编辑#1 我添加了一个屏幕截图,其中显示了一个黄色的自定义视图控制器,其中包含短语holla。正如您可以看到下面的代码aniamtes框架,但不是该视图控制器的元素。这是有意的吗?有解决方法吗?

#import "MyViewController.h"

@interface ViewController ()
  @property (nonatomic, strong) MyViewController *firstIV;
@end

- (void)viewDidLoad
{
  [super viewDidLoad];


  // lets add a few UIImageViews that we will animate
  MyViewController *tmpFirstIV=[[MyViewController alloc] init];
  tmpFirstIV.view.backgroundColor=[UIColor yellowColor];
  tmpFirstIV.view.frame=CGRectMake(10.0f, 10.0f, 100.0f, 100.0f);
  self.firstIV=tmpFirstIV;
  [self addChildViewController:self.firstIV];
  [self.view addSubview:self.firstIV.view];
  [self.firstIV didMoveToParentViewController:self.firstIV];


-(void)updateAction:(id) sender{
  NSLog(@"Here are some results");
  if([self.updateButton.currentTitle isEqualToString:@"update this"]){
     [UIView animateWithDuration:6.0f animations:^{  // yeah I know, long animation
       self.firstIV.view.frame=CGRectMake(10.0f, 10.0f, 100.0f, 0.0f);
     }];
     [self.updateButton setTitle:@"make bigger" forState:UIControlStateNormal];
   }else{
     [UIView animateWithDuration:6.0f animations:^{  // equally long
       self.firstIV.view.frame=CGRectMake(10.0f, 10.0f, 100.0f, 100.0f);
     }];
     [self.updateButton setTitle:@"update this" forState:UIControlStateNormal];
   }
}

enter image description here

EDIT2

似乎没有做任何事情......将调查此层。

- (无效)viewWillLayoutSubviews {     [super viewWillLayoutSubviews];

CGRect viewBounds = self.view.bounds;
self.myLabel.frame = CGRectMake(100.0f,viewBounds.size.height-20.0f,50.0f,50.0f);

}

1 个答案:

答案 0 :(得分:0)

您只是为黄色框的框架设置动画,而不是标签。标签的框架不会因为超级视图的框架发生变化而改变。你要么:

  1. 编写代码以在点按按钮时为两个对象设置动画
  2. 编写代码以在调整框大小时自动移动标签,通常是通过覆盖视图控制器的- (void)viewWillLayoutSubviews方法。
  3. 如果您仅定位iOS 6,则可以使用新的自动布局功能。 Ray Wenderlich有excellent tutorial