2015-06-25 25 views
16

我使用UIButton自動佈局。當圖像很小時,龍頭區域也很小。我可以想象幾種方法來解決這個問題:如何增加UIButton的Tap Area?

  1. 增加圖像大小,即在圖像周圍放置一個透明區域。這是不好的,因爲當你定位圖像時,你必須記住額外的透明邊界。
  2. 使用CGRectInset並增加尺寸。這不適用於自動佈局,因爲使用自動佈局,它會回落到原始圖像大小。

除了上述兩種方法之外,還有更好的解決方案來增加UIButton的tap區域嗎?

回答

14

您可以簡單地調整按鈕的內容插入以獲得所需的大小。在代碼中,它看起來是這樣的:

button.contentEdgeInsets = UIEdgeInsets(頂:12,左:16,底部:12,右:16)

//或者如果你特別希望調整圖像周圍,而不是使用button.imageEdgeInsets

在界面生成器,它看起來就像這樣:

interface builder

+0

應該給它一個負值還是請解釋 – Shiva

-1

我不確定,但應該有一種方法來指定任何UIView的最小尺寸,這可能會解決您的問題,無需額外的工作。但說實話,在圖像周圍添加額外的透明背景是最好的解決方案。

4

您可以在故事板或代碼中設置按鈕EdgeInsets。按鈕的大小應該高於按鈕的圖像的高度和寬度。 UIEdgeInseton UIButton

或者你也可以使用圖像視圖與點擊手勢在它的動作,而在圖像視圖粘貼。確保在故事板上勾選用戶交互已啓用,以便手勢正常工作。 使圖像視圖比圖像更大,並在其上設置圖像。 現在將圖像視圖圖像的模式設置爲以故事板/界面構建器爲中心。

Using image view with tap action and image set on it as center mode 你可以點擊圖片做動作。

希望它會有幫助。

2

非常容易。創建一個自定義的UIButton類。然後覆蓋pointInside ...方法並根據需要更改值。

#import "CustomButton.h" 

@implementation CustomButton 

-(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    CGRect newArea = CGRectMake(self.bounds.origin.x - 10, self.bounds.origin.y - 10, self.bounds.size.width + 20, self.bounds.size.height + 20); 

    return CGRectContainsPoint(newArea, point); 
} 
@end 

這將需要更多的10點接觸面積爲雙方。

相關問題