2012-03-26 106 views
4

是否可以創建如下圖所示的兩個按鈕?它可能看起來像你應該使用UIButton或UIImageView,但如果我點擊區域1,它仍然作爲點擊按鈕1.按鈕2應該被解僱,當我點擊區域1以及!iOS上的圓形按鈕

enter image description here

+2

除非你需要兩個動作,爲什麼不把他們作爲一個單一的圖像裝入一個看不見的按鈕? – 2012-03-26 12:11:10

回答

0

是的,當然是可以的。

您可以通過IB有多個選擇連接一個動作。
您也可以直接從button1觸發的方法內部調用button2觸發的方法。

3

你可以通過你的切割按鈕的層,並設置半徑作圓形狀的按鈕。

[[按鈕層] setCornerRadius:8.0f];

你也可以嘗試改變半徑。

+0

設置cornerRadius隻影響圖像,area1仍然可以點擊頂部按鈕 – Bot 2014-07-14 21:14:50

0

設置userInteractionEnabled爲NO小按鈕1.所有事件將進入更大的按鈕2.

0

我已經創建了兩個圓矩形按鈕用於此目的,其中之一是長而薄,另一個更寬。他們一起構建了一個胖乎乎的加號形狀,這個形狀非常接近圓形,考慮到蘋果可以接受44像素作爲最小可壓縮尺寸。如果要更改圖像,請將另一圖像設置爲其imageView以顯示突出顯示的狀態,並將兩個按鈕的多個操作(如果想要在圖像視圖中模仿按鈕高亮顯示的狀態,則不會足夠)。或者,您可以添加觀察者並根據按鈕更改imageview的突出顯示狀態

7

如果未能將上述響應接受,您可以實施替代pointInside:withEvent:UIButton自定義子類。

假設你的視圖正好是正方形和圖形精確的圓形和填充整個方形,其示例可以是:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    // check that the point is at least inside the normal rect 
    if(![super pointInside:point withEvent:event]) return NO; 

    // we'll assume a square view with an exact circle inside, so 
    // the radius of the circle is just half the width 
    CGFloat radius = self.bounds.size.width*0.5f; 

    // the point (radius, radius) is also the centre of the view, so... 
    CGFloat squareOfDistanceFromCentre = 
      (radius - point.x)*(radius - point.x) + 
      (radius - point.y)*(radius - point.y); 

    // if the point is too far away, return NO 
    if(squareOfDistanceFromCentre > radius*radius) return NO; 

    // otherwise we've exhausted possible reasons for answering NO 
    return YES; 
} 
0

乾淨的方式來處理pointInside上的圓形按鈕是這樣的:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (![super pointInside:point withEvent:event]) 
    { 
     return NO; 
    } 
    BOOL isInside = (pow((point.x-self.frame.size.width/2), 2) + pow((point.y - self.frame.size.height/2), 2) < pow((self.frame.size.width/2), 2)) ? YES:NO; 
    return isInside; 
} 

您可以溝「isInside」 variabe,但這種方式更容易進行測試。