繁体   English   中英

动画麻烦

[英]trouble with an animation

我将UIImageView子类化。 双击时,它将自身放大40%。 我也有一个UILabel,我将其放置在自定义UIImageView中,并希望将其放大40%。

我似乎无法使其正确动画。

-(void)enlargeImage
{
    CGPoint pointCenter = self.center;
    CGPoint labelCenter = self.displayNameLabel.center;

    [UIView animateWithDuration:1
                          delay:0
                        options:(UIViewAnimationOptionAllowUserInteraction) 
                     animations:^{
                     self.frame = CGRectMake(self.frame.origin.x,
                                             self.frame.origin.y,
                                             self.frame.size.width * (1 + self.sizeMultiplier),
                                             self.frame.size.height * (1 + self.sizeMultiplier));
                         // Commented out after setting the autoresizeMask on the label
                         /*
                         self.displayNameLabel.frame = CGRectMake(self.displayNameLabel.frame.origin.x,
                                                                  self.displayNameLabel.frame.origin.y,
                                                                  self.displayNameLabel.frame.size.width * (1 + self.sizeMultiplier),
                                                                  self.displayNameLabel.frame.size.height * (1 + self.sizeMultiplier));
                         */
                         self.layer.shadowOpacity = 1;
                     }
                     completion:^(BOOL finished)
                     {
                         [self callDelegateSelect];
                     }];

    self.center = pointCenter;

    //self.displayNameLabel.center = labelCenter;
    //self.displayNameLabel.center = CGPointMake((self.frame.size.width / 2), (self.frame.size.height / 2));

    self.isSelected = TRUE;
}


-(void)shrinkImageWithZoomScale:(float)zoomScale
{
    CGPoint pointCenter = self.center;

    CGPoint labelCenter = self.displayNameLabel.center;

    [UIView animateWithDuration:1
                          delay:0
                        options:(UIViewAnimationOptionAllowUserInteraction)
                     animations:^{
                     self.frame = CGRectMake(self.frame.origin.x,
                                             self.frame.origin.y,
                                             (self.originalHeight / zoomScale),
                                             (self.originalHeight / zoomScale));

                         // Commented out after setting the autoresizeMask on the label
                         /*
                         self.displayNameLabel.frame = CGRectMake(self.displayNameLabel.frame.origin.x,
                                                                  self.displayNameLabel.frame.origin.y,
                                                                  ((self.originalLableHeight) / zoomScale),
                                                                  ((self.originalLableHeight) / zoomScale));
                         */
                         self.layer.shadowOpacity = 0;
                     }
                     completion:^(BOOL finished)
                    {
                        [self callDelegateDeselect];
                    }];

    self.center = pointCenter;
    //self.displayNameLabel.center = labelCenter;
    //self.displayNameLabel.center = CGPointMake((self.frame.size.width / 2), (self.frame.size.height / 2));

    self.isSelected = FALSE;
}

自定义UIImageView动画也正是我想要的动画,但是UILabel行为异常。

未选中(UILabel的背景设置为橙色):

未选择

已选择:

已选

我猜因为UIImageView的点参考正在更改,所以我告诉UILabel是要弄乱点吗?

编辑:

自定义UIImageView的:

self.autoresizesSubviews = TRUE;

子视图UILabel:

self.displayNameLabel.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

这解决了尺寸问题,但并没有从中心发展; 生长时,它向右移动并向左移动到中心。 缩小时,它向左移动并向右移动到中心。 我还注释掉了在动画代码中设置标签的框架。

如果UILabelUIImageView的子视图,则可以尝试设置UILabel自动调整大小选项,以使其在其超级视图执行时自动调整大小。

另外,确保将UIImageViewautoresizesSubviews属性设置为YES (顺便说一下,这是默认设置)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM