2012-02-01 8 views
0

私の意見にはUIImageViewがあります。その画像の特定の部分は、UIButtonsとして使用したいと思います。しかし問題は、それらの画像部分は規則的な形ではないということです。私は何も試していない。私の頭に浮かんだすぐに解決策は、小さなフレームのイメージを認識し、そのフレームにカスタムボタンを配置することでした。しかし、イメージ部分(ボタン領域)は規則的な形状ではないので、このコンセプトは失敗しました。
UIImageViewにボタンを配置すると、イメージの特定の部分(通常の形状ではない)が何らかのアクションに反応するようにすることができます。UIImageViewの複数のボタン

EDIT
は、以下の画像を考えてみましょう:
enter image description here

は私が暗いセンターサークルに一つのボタンを配置します。 2つの垂直線の間にボタンを配置して、四分の一のボタンがそれぞれ異なる動作でクリック可能になるようにします。だから、私は5つのボタンがあります。

おかげで、
Nitish

+0

さらに詳しい説明ができますか?私はポイントを得ることができません。また、あなたがしようとしていることを理解できない.. !! – Sarah

+0

私の編集した質問をご覧ください。 – Nitish

+0

は答えを – shannoga

答えて

3

  1. 最初の1

    -(CGFloat)percentFromHeight:(CGFloat)percent{ 
    return (CGRectGetHeight(self.bounds)/100)*percent; 
    } 
    
    -(CGFloat)percentFromWidth:(CGFloat)percent{ 
    return (CGRectGetWidth(self.bounds)/100)*percent; 
    } 
    
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint currentTouchPosition = [touch locationInView:self]; 
    
    //first check if the tup is in the center 
    if(currentTouchPosition.x > [view percentFromWidth:45] && currentTouchPosition.x < [view percentFromWidth:55] && currentTouchPosition.y > [view percentFromWidth:45] && currentTouchPosition.y < [view percentFromWidth:55]){ 
        //the tup is in the center 
        //Do your thing 
        return; 
    
    } 
    
    //if this is not in the center, check other options 
    if(currentTouchPosition.x > [view percentFromWidth:50]){ 
        if(currentTouchPosition.y > [view percentFromHeight:50]{ 
         //this is the bottom left side 
        else{ 
         //this is the top left side 
        } 
    
    }else if(currentTouchPosition.x < [view percentFromWidth:50]{ 
        if(currentTouchPosition.y > [view percentFromHeight:50]{ 
         //this is the bottom right side 
        else{ 
         //this is the top right side 
        } 
    } 
    
  2. 秒 - あなたが好むとdrawRect:でカスタム図形を描画するUIBezierPathを使うよう

    サブクラスUIButton/UIImage [UIBezierPath containsPoint]を使用して、それらがビュー/ボタンのパスの内側にあるかどうかを確認します。

+0

'if(currentTouchPosition.x <[view percentFromWidth:50] { ' –

+0

もちろん、ボタンの現在の配置には本当にいい解決策ですが、まだ魔法のボタンを手動でタップしたことを確認しようとするロジックを実装する必要があります。 –

+0

私は同意しますが、私の答えはこの質問のためであり、ボタンの色は同じです。 – shannoga

1

このtopicを読む - でも、同じ画像を。

0

私の意見では、どの部分がタッチされたのか(画像フレームとタッチ可能な部分のフレームを使用して)ボタンを追加するよりも適切な処置をするためにtouchesメソッドを使用する必要があります。

私は2つのオプションを考えることができ
+0

例を挙げることができますか?本当に役に立ちます。 – Nitish

+1

これを見てください。 http://stackoverflow.com/questions/647122/how-do-i-detect-a-touch-over-a-specific-area – Vignesh