UIImageView上的多个按钮

时间:2012-02-01 06:28:54

标签: iphone ios uiimageview uibutton

我的观点中有一个UIImageView。该图片的某些部分,我想用作UIButtons。但问题是,那些图像部分不是规则形状。我还没有真正尝试过任何事情。我想到的直接解决方案是识别小帧图像并在该帧上放置自定义按钮。但由于图像部分(按钮区域)不是规则形状,因此这个概念失败了。

如何在UIImageView上放置按钮,以便图像的特定部分(不是常规形状)响应某些动作。

考虑以下图片:

enter image description here

我想在一个黑暗的中心圆上放一个按钮。我想在两条垂直线之间放置按钮,这样每个按钮的四分之一可以通过不同的动作进行点击。所以,我只有5个按钮。

3 个答案:

答案 0 :(得分:3)

我可以想到两个选项:

  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. 第二 -

    根据您的喜好对UIButton / UIImage进行子类化,并使用UIBezierPath在drawRect:中绘制自定义形状,然后使用[UIBezierPath containsPoint]检查这些是否在视图/按钮的路径中。

答案 1 :(得分:1)

阅读此topic - 即使是相同的图片。

答案 2 :(得分:0)

我的意见是你应该使用触摸方法找到触摸的部分(使用图像框和可触摸部分的框架)并采取适当的操作而不是添加按钮。