Iphone 有没有一种方法可以让圆形矩形按钮拍摄完全相同大小的图像?
有没有一种方法可以让圆形的Rect按钮拍摄完全相同大小的图像?有没有圆形的按钮?我有一个项目,有许多按钮和图像,他们混合在一起。图像大多是圆形的,按钮是矩形的,因此当我将它们彼此靠近时,它们会混合在一起。当iPhone检测到屏幕上有触摸时,它会使用“点击测试”找到触摸视图。默认情况下,命中测试假设每个视图都是矩形 如果希望命中测试将视图视为不同的形状,则需要创建一个子类(在本例中为Iphone 有没有一种方法可以让圆形矩形按钮拍摄完全相同大小的图像?,iphone,objective-c,ios,xcode,ios-simulator,Iphone,Objective C,Ios,Xcode,Ios Simulator,有没有一种方法可以让圆形的Rect按钮拍摄完全相同大小的图像?有没有圆形的按钮?我有一个项目,有许多按钮和图像,他们混合在一起。图像大多是圆形的,按钮是矩形的,因此当我将它们彼此靠近时,它们会混合在一起。当iPhone检测到屏幕上有触摸时,它会使用“点击测试”找到触摸视图。默认情况下,命中测试假设每个视图都是矩形 如果希望命中测试将视图视为不同的形状,则需要创建一个子类(在本例中为UIButton),并重写pointInside:withEvent:方法来测试要使用的形状 例如: @implem
UIButton
),并重写pointInside:withEvent:
方法来测试要使用的形状
例如:
@implementation MyOvalButton
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
return [path containsPoint:point];
}
我还没有测试过那个代码
Swift版本:
class MyOvalButton: UIButton {
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
return UIBezierPath(ovalIn: bounds).contains(point)
}
不要忘记在故事板或xib中将按钮的自定义类设置为MyOvalButton
,如果是在那里创建按钮的话
这是一个演示,我连接了按钮的触碰和触碰事件,以在触摸按钮时将背景变为灰色:
回答您在主题中的问题:(希望我理解您真正想要的)
这使得按钮的边框与您的图像大小相同。我不理解您的问题。也许你们可以发布一个屏幕截图。好吧,我在视图控制器中放置了一个圆形的rect按钮,输入:custom。然后是一个图像:(具有圆形大小)。在模拟器中,当你触摸按钮图像时,按钮的实际区域不仅是图像,而且是一个矩形(当然你看不到它,它比图像大一点)。因此,当我把按钮图像放在彼此靠近的位置时,它们会混合在一起。这些图像彼此不接触,但它们接触的是矩形。很抱歉,我还不能发布任何图片,我需要10个声誉。谢谢!!!作为一个新手,我觉得这很复杂。我在这个项目中使用的唯一动作就是声音按钮。@rob:我喜欢这个解决方案。好汉克!我一直在寻找一种好方法,使圆形按钮(cornerRadius=图像宽度/2)不接受圆形以外的触摸。是的,我只希望按钮的边框与图像的大小完全相同。所以我必须在.h中创建一个出口,然后把它放在.m中?因为我只有一个按钮的动作。
[button setFrame:CGRectMake(button.frame.origin.x, button.frame.origin.y, image.size.width, image.size.height)];