Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 有没有一种方法可以让圆形矩形按钮拍摄完全相同大小的图像?_Iphone_Objective C_Ios_Xcode_Ios Simulator - Fatal编程技术网

Iphone 有没有一种方法可以让圆形矩形按钮拍摄完全相同大小的图像?

Iphone 有没有一种方法可以让圆形矩形按钮拍摄完全相同大小的图像?,iphone,objective-c,ios,xcode,ios-simulator,Iphone,Objective C,Ios,Xcode,Ios Simulator,有没有一种方法可以让圆形的Rect按钮拍摄完全相同大小的图像?有没有圆形的按钮?我有一个项目,有许多按钮和图像,他们混合在一起。图像大多是圆形的,按钮是矩形的,因此当我将它们彼此靠近时,它们会混合在一起。当iPhone检测到屏幕上有触摸时,它会使用“点击测试”找到触摸视图。默认情况下,命中测试假设每个视图都是矩形 如果希望命中测试将视图视为不同的形状,则需要创建一个子类(在本例中为UIButton),并重写pointInside:withEvent:方法来测试要使用的形状 例如: @implem

有没有一种方法可以让圆形的Rect按钮拍摄完全相同大小的图像?有没有圆形的按钮?我有一个项目,有许多按钮和图像,他们混合在一起。图像大多是圆形的,按钮是矩形的,因此当我将它们彼此靠近时,它们会混合在一起。

当iPhone检测到屏幕上有触摸时,它会使用“点击测试”找到触摸视图。默认情况下,命中测试假设每个视图都是矩形

如果希望命中测试将视图视为不同的形状,则需要创建一个子类(在本例中为
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)];