Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios使用CGAffineTransformMakeScale生长两个控件不';你不能正确地居中吗?_Ios_Objective C_Cocoa Touch - Fatal编程技术网

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。我不知道为什么,但动画现在没有出现。好的,我将其添加为子视图:)