0
我对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);
这样可以解决大小问题,但它不会从中心生长;在成长的过程中,它向右移动,并将动画留给中心。当缩小时,它向左移动并且向右移动到中心。我还评论说在动画代码中设置标签的框架。
好吧,我已经将autoresizeSubviews设置为true;没有意识到我需要在标签上设置autoresizingMask,谢谢。尽管如此,它并没有完全解决这个问题。当它增长时,标签向右移动,然后向左移动到中心。当它缩小时,它会调整大小并向左移动,然后向右移动到中心。我希望它从中心发展并缩小到中心。 – Padin215
您可以使用自动调整掩码来完成此操作,并且不会在'enlargeImage'方法中修改标签的'frame'。你确实删除了这段代码,不是吗? –
是的,我评论了设置UILabel的框架。 – Padin215