我有一個iOS應用程序寫在Swift(2.1)。我使用了一個小小的解決方法,我發現它在NavigationBar中的UIBarButtonItem之間留出了較小的空白。這裏是我的代碼:UIButton與模板圖像接收觸摸事件只爲非透明像素
let modeImage = UIImage(named: modeFilename)!.imageWithRenderingMode(.AlwaysTemplate)
modeButton = UIButton(frame: CGRectMake(0, 0, 22, 22))
modeButton.setBackgroundImage(modeImage, forState: .Normal)
modeButton.addTarget(self, action: Selector("modeClicked:"), forControlEvents:.TouchUpInside)
modeButton.transform = CGAffineTransformMakeTranslation(10, 0)
let modeButtonContainer = UIView(frame: modeButton.frame)
modeButtonContainer.addSubview(modeButton)
modeButtonItem = UIBarButtonItem(customView: modeButtonContainer)
按鈕的作品,但我有一個正方形的簡單的圖像和觸摸僅在非透明像素的工作(或接近它們可能)。在模擬器上很難觸及它,更不用說真正的設備。這是一個真正的痛苦。我發現解決方案在modeButtonContainer上使用Tap Gesture Recognizer,但隨後按鈕沒有懸停,所以它不是最佳解決方案。
使用setImage而不是setBackgroundImage不會改變任何東西。創建類型爲UIButtonType.Custom的按鈕也一樣。
幫助!