ios使用CGAffineTransformMakeScale生长两个控件不';你不能正确地居中吗?
我正在尝试制作一个标签和一个图像视图的动画,让它们从零增长到界面生成器中的大小和位置 我的图像视图比标签更大,标签位于其内部,在顶部。 就像这样ios使用CGAffineTransformMakeScale生长两个控件不';你不能正确地居中吗?,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我正在尝试制作一个标签和一个图像视图的动画,让它们从零增长到界面生成器中的大小和位置 我的图像视图比标签更大,标签位于其内部,在顶部。 就像这样 ............................. . . . ......................... . . . . . . . LABEL . . . . .
.............................
. .
. ......................... .
. . . .
. . LABEL . .
. . . .
. ......................... .
. .
. IMAGE VIEW .
.............................
我认为动画应该从标签的中心开始
这是我尝试过的,我可能想添加更多的动画,因此阵列
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.imv.transform = CGAffineTransformMakeScale(0.0, 0.0);
self.lbl.transform = CGAffineTransformMakeScale(0.0, 0.0);
NSMutableArray* animationBlocks = [NSMutableArray new];
typedef void(^animationBlock)(BOOL);
animationBlock (^getNextAnimation)() = ^{
animationBlock block = animationBlocks.count ?
(animationBlock)[animationBlocks objectAtIndex:0] : nil;
if (block){
[animationBlocks removeObjectAtIndex:0];
return block;
}else{
return ^(BOOL finished){};
}
};
[animationBlocks addObject:^(BOOL finished){;
[UIView animateWithDuration:1.0 animations:^{
//grow
self.lbl.hidden = NO;
self.lbl.transform = CGAffineTransformMakeScale(1.0, 1.0);
self.imv.hidden = NO;
self.imv.transform = CGAffineTransformMakeScale(1.0, 1.0);
} completion: getNextAnimation()];
}];
[animationBlocks addObject:^(BOOL finished){;
//
}];
getNextAnimation()(YES);
}
我试过设置锚点,也研究过CGAffineTransformScale,但我不确定在这种情况下/混乱时什么会起作用。您必须将缩放转换与翻译结合起来。差不多
CGAffineTransformTranslate(CGAffineTransformMakeScale(0,0), self.imv.frame.size.width/2 , self.imv.frame.size.height/2);
但是对标签和图像视图都这样做吗?它只是分开工作,所以如果对两者都这样做,每个视图都将从其中心进行缩放。如果要同时缩放这两个视图,则需要它们是同一父视图的子视图,并缩放此父视图(简单选项)。或者,您必须计算申请翻译所需的中心(更多的工作)。当然,如果您的标签添加为imageView的子视图,事情会变得更简单。然后您只需要缩放imageView。我不知道为什么,但动画现在没有出现。好的,我将其添加为子视图:)