2014-05-11 40 views
0

我正在構建一個將有多行單元格的uicollectionview。每個單元格將包含一個UIButton。我希望能夠在點擊時放大UIButton。 我已經發現這個代碼放大self.view,但我不知道如何使它正確放大在挖掘UIButton的中心。現在,它放大到屏幕的右下角。iOS - 如何放大UIButton的中心?

任何有關在正確點擊按鈕上的建議?

-(void)didTapButton:(UIButton*)sender{ 
    CGFloat s = 3; 
    CGAffineTransform tr = CGAffineTransformScale(self.view.transform, s, s); 
    CGFloat h = sender.frame.size.height; 
    CGFloat w = sender.frame.size.width; 
    [UIView animateWithDuration:2.5 delay:0 options:0 animations:^{ 
     self.view.transform = tr; 
     self.view.center = CGPointMake(w*s/2,h-h*s/2); 
    } completion:^(BOOL finished) {}]; 
} 
+1

您可能需要重新定位定位點... – holex

回答

0

如果您使用自動佈局,您將無法使用視圖動畫你正在做的方式,因爲佈局由轉換觸發,不斷重置框架。這可以解釋爲什麼縮放似乎將視圖向下和向右擴展而不是從中心擴展。 (您可能喜歡在the struggle between auto layout and view transforms上看到我的散文。)

+0

是的,我剛剛嘗試禁用自動佈局,它仍然放大到相同的位置。我猜這很可能只是我計算職位的方式。必須需要一些不同的邏輯。 – JimmyJammed

+0

是的,好吧,我有點擔心你正在進行尺度轉換,並且同時移動中心,這看起來有點不確定。 – matt

+0

而你的中心計算沒有任何意義,因爲發件人的框架是根據其超級視圖的界限,但「self.view.center」是根據_its_ superview的界限,所以你正在使用兩個完全不同的座標系而不進行轉換。 – matt