2013-02-01 159 views
2

我想使UISwitch周圍的觸摸區域每邊增大10個點。看看相關文章(UIButton: Making the hit area larger than the default hit area)中的一些建議,我嘗試使用下面的方法增加UISwitch周圍的框架,但它會導致整個UISwitch拉伸以填充新框架。UISwitch:使觸摸區域大於默認觸摸區域

slide to beginarrowwith padding

有沒有更合理的方法可以做到這一點?

// Increase margin around switch based on width 
const CGFloat desiredWidth = 260.0f; // real width is 240 
const CGFloat margin = 0.5f * (desiredWidth - self.beginSwitch.frame.size.width); 

// Add margin on all four sides of the switch 
CGRect newFrame = self.beginSwitch.frame; 
newFrame.origin.x -= margin; 
newFrame.origin.y -= margin; 
newFrame.size.width += 2.0f * margin; 
newFrame.size.height += 2.0f * margin; 

self.beginSwitch.frame = newFrame; 
+0

將一個不可見的按鈕放在它的頂部,當它被擊中時,設置實際開關的按鈕狀態 – trumpetlicks

+0

也許作爲最後的手段,將工作。這種方法的問題是用戶不能像他們期望的那樣滑動交換機。 –

+1

好點,我想我永遠不會滑動開關,我總是點擊他們大聲笑 – trumpetlicks

回答

0

我已通過把一個不可見的按鈕(與較大的尺寸)中的圖像(或在您的情況下,開關)的前完成這樣的技藝。這樣做,您可以設置開關的狀態並基於開關當前狀態的反轉。也可以在不可見按鈕的操作代碼中執行您的實際操作。

相關問題