我的观点中有一个UIImageView
。该图片的某些部分,我想用作UIButtons
。但问题是,那些图像部分不是规则形状。我还没有真正尝试过任何事情。我想到的直接解决方案是识别小帧图像并在该帧上放置自定义按钮。但由于图像部分(按钮区域)不是规则形状,因此这个概念失败了。
如何在UIImageView
上放置按钮,以便图像的特定部分(不是常规形状)响应某些动作。
考虑以下图片:
我想在一个黑暗的中心圆上放一个按钮。我想在两条垂直线之间放置按钮,这样每个按钮的四分之一可以通过不同的动作进行点击。所以,我只有5个按钮。
答案 0 :(得分:3)
我可以想到两个选项:
第一个
-(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]
检查这些是否在视图/按钮的路径中。
答案 1 :(得分:1)
阅读此topic - 即使是相同的图片。
答案 2 :(得分:0)
我的意见是你应该使用触摸方法找到触摸的部分(使用图像框和可触摸部分的框架)并采取适当的操作而不是添加按钮。