UIImageView 上的多个按钮

Posted

技术标签:

【中文标题】UIImageView 上的多个按钮【英文标题】:Multiple buttons on UIImageView 【发布时间】:2012-02-01 06:28:54 【问题描述】:

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

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

考虑下图:

我想在中心圆上放置一个按钮,它是黑暗的。我想将按钮放置在两条垂直线之间,以便四分之一的按钮可以通过不同的操作单击。所以,我总共有 5 个按钮。

【问题讨论】:

你能多解释一下吗?我无法理解这一点。也无法理解您要做什么..!! 请看我编辑的问题。 你为什么不使用自定义按钮?自定义按钮是透明的! 如何让自定义按钮的边框不规则? 【参考方案1】:

我能想到 2 个选项:

    第一个

    -(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
        
     
    

    秒-

    根据需要继承 UIButton / UIImage 并使用 UIBezierPath 在drawRect: 中绘制自定义形状,然后使用[UIBezierPath containsPoint] 检查这些形状是否在视图/按钮的路径内。

【讨论】:

不需要if(currentTouchPosition.x &lt; [view percentFromWidth:50] 当然,对于当前按钮的位置来说,这是一个非常好的解决方案。但是我们仍然需要实现逻辑来尝试检查女巫按钮是否被手动点击,对于更复杂的具有不规则形状的按钮块来说,这将是非常困难的。可能颜色和 alpha 的方式会更有用。 我同意,但我的回答是针对这个问题。并且他的按钮颜色相同。【参考方案2】:

阅读此topic - 即使是同一张图片。

【讨论】:

【参考方案3】:

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

【讨论】:

你能举个例子吗。会很有帮助的。 看看这个。 ***.com/questions/647122/…

以上是关于UIImageView 上的多个按钮的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 上的多个按钮

UIimage与UIimageView

我可以更改 UIButton 上的色调颜色,但不能更改 UIImage

当 UIImage 改变时动画回退

多个 UIImage 视图

获取 UIImageView 中 pan On UIImage 的像素位置