2014-03-27 39 views
4

我有一個在Interface Builder中創建的按鈕。我設置了圓角半徑和masksToBounds在Interface Builder以及:具有圓角的UIButton允許在角落中進行交互

Runtime Attributes

本質上這些設置使按鈕輪。這會正確剪輯我的按鈕;然而,角落仍然是互動的。

如何讓互動保持在圖層中?

這裏是我的按鈕截圖:

Button Screenshot

我的按鈕是紅色圓圈。我在它後面放置了一個淺灰色的UIView,以顯示它仍然響應觸摸的區域。

+0

添加按鈕的屏幕截圖 – Fry

+0

@Fry添加。關於修復的任何想法? – jancakes

+0

看看我的回覆 – Fry

回答

0

你可以繼承UIButton;

in – (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event檢查觸點是否在我們感興趣的區域內,否則返回零。 更多關於此這裏:http://www.planet1107.net/blog/custom-shape-uibutton-tutorial/

或者...更加簡單。使用此https://github.com/ole/OBShapedButton

更新 - 用@ jancakes注:

*對GitHub的項目一注:該按鈕會只響應在圖像的非透明部分的觸摸,所以如果圖像嚴重依賴於透明度,那麼在教程中的實現是更有用的方法

+0

謝謝,非常有幫助! – jancakes

+0

有關該github項目的一個注意事項:該按鈕只會響應圖像中非透明部分的觸摸,因此如果圖像嚴重依賴於透明度,那麼本教程中的實現是更有用的方法 – jancakes

+0

歡迎!用你的筆記更新了答案。快樂的編碼! – TonyMkenu

-1

問題是,當您使用屬性backgroundColor這是行爲。 爲避免這種情況,只需使用UIImage作爲按鈕的背景。

創建一個以透明內容爲背景的圓形圖像作爲背景,這對我很有用。

+0

不幸的是,沒有奏效。我已經將背景顏色設置爲[UIColor clearColor],並試圖將圖像設置爲圖像和背景圖像(不是同時)。行爲沒有改變。 – jancakes