commitAnimations没有调整我的UIImageView子视图的大小

时间:2010-05-19 01:51:24

标签: objective-c xcode ipad interface-builder

我创建了一个UIView作为子视图,并且在该子视图中我添加了一个UIImageView作为子视图。

UIView *viewCreated;
UIButton *buttonCreated;
UIImageView *imageViewCreated;
CGRect myFrame = CGRectMake(0, 0, 1024, 1024);
viewCreated = [[UIView alloc] initWithFrame:myFrame];
[viewCreated setTag:intTag];
viewCreated.backgroundColor = [UIColor redColor];
[self.view addSubview:viewCreated];
[self randomize];
UIImage *d1Image = [UIImage imageNamed:[NSString stringWithFormat:@"image%d.png", randomNumber]];
imageViewCreated = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f,0.0f,1024.0f, 1024.0f)];
[imageViewCreated setImage:[UIImage imageNamed:[NSString stringWithFormat:@"image%d.png", randomNumber]]]; 
[viewCreated addSubview:imageViewCreated];
//[imageViewCreated release];
return [viewCreated autorelease];

但是当这段代码执行时,只有第一个子视图被动画化并调整大小。 UiimageView向左移动200个像素,但不会调整大小。

NSLog(@"sender tag %i",[sender tag]);   
UIView *currentView = [self.view viewWithTag:[sender tag]];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];  
currentView.frame = CGRectMake(-200, 0,40, 102);
[UIView commitAnimations];

我很确定我没有以编程方式正确创建子视图,因为当我在Interface Builder中执行它时,它按预期工作。

我是否必须做一些特定的事情才能将第二个子视图的行为实际附加到第一个子视图?

2 个答案:

答案 0 :(得分:0)

一些建议:

  • 使用UIImageView的contentMode属性进行游戏。默认模式为UIViewContentModeScaleToFill。像UIViewContentModeScaleAspectFit这样的东西可能效果更好。

  • 确保代码中的某处,您不会意外地将autoresizesSubviews属性设置为NO。

  • 不要使用框架大小来缩放视图,而应考虑使用transform属性和CGAffineTransformMakeScale函数。要移动它,您还可以使用CGAffineTransformMakeTranslation

答案 1 :(得分:0)

我最终用它来解决我的问题。工作得很好。

imageViewCreated.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;