簡體   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