我创建了一个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中执行它时,它按预期工作。
我是否必须做一些特定的事情才能将第二个子视图的行为实际附加到第一个子视图?
答案 0 :(得分:0)
一些建议:
使用UIImageView的contentMode
属性进行游戏。默认模式为UIViewContentModeScaleToFill
。像UIViewContentModeScaleAspectFit
这样的东西可能效果更好。
确保代码中的某处,您不会意外地将autoresizesSubviews
属性设置为NO。
不要使用框架大小来缩放视图,而应考虑使用transform
属性和CGAffineTransformMakeScale
函数。要移动它,您还可以使用CGAffineTransformMakeTranslation
。
答案 1 :(得分:0)
我最终用它来解决我的问题。工作得很好。
imageViewCreated.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;