回答
像別人說你應該有登記觸摸事件合理的表面,但我敢肯定你知道,有你的原因,所以我就告訴你我是如何做的:
我需要不久之前就做到了這一點,我所做的就是Sixten Otto剛剛提出的建議。有在我原來的問題在某一個點獲得你的圖像的阿爾法值(「UPDATE」一節)一些提示:
How to create a transparent window with non-rectangular buttons?
編輯:我建議在這個例子中繼承UIControl以下,但如果除了「非矩形」之外,你不需要在按鈕上有任何特殊的行爲,只需設置一個與你的PNG設置的無邊界UIButton就可以完成這項工作並且需要較少的工作。通過對UIControl進行繼承,您可以更好地控制控件的行爲,儘管這樣做是「艱難的」。
我建議你子類UIControl
並重寫觸摸事件方法,然後檢查點擊點下的阿爾法,如果alpha == 0
不處理事件。對於繪圖,您可以覆蓋drawRect:
並使用NSImage
的方法在控件的框架中繪製圖像。
首先你需要加載圖像,並得到了它的位圖表示:
buttonImage = [NSImage imageNamed:@"myButtonImage"];
buttonImageRep = [[buttonImage representations] objectAtIndex:0];
然後你就可以把它畫到控件的觀點:(其中stateImage是一個指針,必須根據要繪製的圖像如果該按鈕被按下或沒有)
- (void)drawRect:(NSRect)aRect {
[stateImage drawInRect:[self bounds] fromRect:NSMakeRect(0.0,0.0,[buttonImage size].width,[buttonImage size].height)
operation:NSCompositeSourceOver fraction:1.0];
}
在這一點上,你已經繪製了你的按鈕,你的PNG圖像。您可以覆蓋觸摸事件的方法,如果字母不爲0處理事件:
NSColor *colorUnderMouse = [buttonImageRep colorAtX:mouse.x y:mouse.y];
float alpha = [colorUnderMouse alphaComponent];
這就是我沒有和它奇妙的作品。希望這可以幫助!
N.B:我的例子是Mac,但它也應該在iPhone上工作,也許稍作修改。
矩形按鈕是按鈕式,您可以使用自定義按鈕類型,並指定圖像擺脫按鈕的矩形邊緣...繼承人到按鈕類型http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/doc/c_ref/UIButtonType和UIButton的http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html
參考這聽起來像你正在尋找按鈕的可點擊區域完全符合您使用的PNG。
如果這就是你要找的,我首先會說不要那樣做。使用手指按壓iPhone,通常沒有精確度來區分這樣的小區域。
但是,如果你堅持這個想法,那麼解決方案是根本不使用按鈕,而是處理父框架中的單擊並手動解釋單擊的X/Y值以確定它是否在某些(在圓形邊緣按鈕的情況下,可能包括檢查4個圓圈和2個矩形的結果)
編輯: 實現你的原始問題的一部分,我注意到你提到你想處理功能會自動基於Alpha通道。雖然我會推薦我的邊界區域的方法,但理論上可以通過對PNG進行採樣來測試Alpha通道,其偏移量取決於按鈕的原點。甚至可能在正常按鈕的單擊事件中執行此操作。
由於Guvante says,依靠精確觸摸確實不是一個好主意。例如,Apple建議使用controls be at least 44px across。
我推薦使用UIButton
類型UIButtonTypeCustom
,將按鈕的圖像設置爲您的PNG,並註冊觸摸事件(see here for more on event handling)。然後,在您的操作方法中,您可以將觸摸的座標移出事件,並根據圖像的alpha測試這些座標,以查看是否應將其視爲「真實」觸摸。
另一種選擇可能是將按鈕分成多個矩形部分。
- 1. 矩形以外形狀的按鈕
- 2. 只有css的非矩形形狀?
- 3. 插入非矩形形狀
- 4. 可擴展的非矩形CSS按鈕?
- 5. Android非矩形按鈕,如何處理?
- 6. NSToolbar中的圓形矩形按鈕
- 7. 在iPhone中使用圓形矩形按鈕用於TableView頁腳?
- 8. 自定義非矩形按鈕三角形
- 9. 的Android環形狀爲圓形按鈕
- 10. Xcode 5圓形矩形按鈕
- 11. 圓形矩形按鈕連接到ViewController.h
- 12. 與CSS的按鈕形狀
- 13. 用按鈕繪製矩形
- 14. 填充按鈕和矩形
- 15. 陰影與CSS梯形形狀按鈕
- 16. 識別矩形形狀
- 17. 如何在iPhone上繪製具有修剪而非圓角的矩形的矩形?
- 18. 按鈕形狀風格
- 19. 自定義按鈕形狀
- 20. 繪圖形狀和按鈕
- 21. C#按鈕形狀問題
- 22. Android:將圖像添加到具有形狀背景的按鈕
- 23. 如何製作具有自定形狀的按鈕?
- 24. 沒有矩形形成的矩形
- 25. 簡單的可定製非矩形形狀
- 26. 如何在Android中將矩形形狀添加到矩形形狀
- 27. iPhone,圓形矩形按鈕的上半部分和下半部分?
- 28. 非矩形圖像
- 29. 非矩形圖像
- 30. 按鈕與沒有常規按鈕形狀的圖像:Android
更多細節它你正在尋找的東西可能會讓你想要更快地走到哪裏。 – fbrereto