[英]UIButton scaled with core animation doesn't change hit area
我有一個uibutton,可以對其進行縮放。 但是,命中區域不會隨其縮小,而是保持其原始大小。
我的代碼:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
float widthScale = size.width / view.frame.size.width;
float heightScale = size.height / view.frame.size.height;
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(widthScale, heightScale, 1.0)];
CAAnimationGroup *animGroup = [CAAnimationGroup animation];
animGroup.animations = [NSArray arrayWithObjects:animation];
animGroup.duration = 0.5;
animGroup.removedOnCompletion = NO;
animGroup.fillMode = kCAFillModeForwards;
[view.layer addAnimation:animGroup forKey:nil];
該按鈕具有我使用setImage:forState設置的圖像:我給按鈕一個框架,然后將autoresizeSubviews設置為YES
這是一個古老的討論,但是我只是遇到了類似的情況,而且這個問題似乎並沒有得到真正的回答。
圖層不會直接響應觸摸(觸摸委托僅是UIView的控制器,而不是其底層CALayer)。 在對圖層進行動畫處理后修復命中區域的一種可能解決方案是修改(后視圖的) view.frame屬性,使其大小和原點明確/“手動”適應動畫圖層的最終(預期)大小。
轉換后的view.frame將允許在正確區域中再次響應觸摸,而不會影響動畫CALayer形狀。 換句話說,CALayer對象和UIView的frame屬性似乎沒有約束。
CAAnimation
比例/等 視圖的基礎層; 視圖本身占據相同的邊界。 要修改視圖本身,請嘗試使用UIView
動畫塊並修改視圖的transform屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.