簡體   English   中英

帶有核心動畫縮放的UIButton不會更改命中區域

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM