Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Ios 缩放按钮以适应背景图像_Ios_Swift - Fatal编程技术网

Ios 缩放按钮以适应背景图像

Ios 缩放按钮以适应背景图像,ios,swift,Ios,Swift,我这里有个问题。我想要这个按钮完全符合背景图像的尺寸 例如: 如您所见,“请求计划”菱形周围的框与“视图计划”菱形重叠,在运行时,当我单击“视图计划”菱形时,它实际上会单击“请求计划”菱形,因为它重叠。有什么方法可以解决这个问题吗?在故事板中,无论你想要什么长度都相等,只要拖动到另一个对象并选择“等宽”和“等长”。关于重叠,可以更改按钮或视图的顺序,或者重新创建它。您可以创建CustomButtonclass extend ui按钮,然后覆盖pointInside override func

我这里有个问题。我想要这个按钮完全符合背景图像的尺寸

例如:


如您所见,“请求计划”菱形周围的框与“视图计划”菱形重叠,在运行时,当我单击“视图计划”菱形时,它实际上会单击“请求计划”菱形,因为它重叠。有什么方法可以解决这个问题吗?

在故事板中,无论你想要什么长度都相等,只要拖动到另一个对象并选择“等宽”和“等长”。关于重叠,可以更改按钮或视图的顺序,或者重新创建它。

您可以创建
CustomButton
class extend ui按钮,然后覆盖
pointInside

override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
    *we need check at this point inside or outside*
    return self.alphaAtPoint(point) >= 127
}
我们可以通过检查
alpha
value来检查它

func alphaAtPoint(point: CGPoint) -> CGFloat {
   var pixel: [UInt8] = [0, 0, 0, 0]
   let colorSpace = CGColorSpaceCreateDeviceRGB();
   let alphaInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)
   let context = CGBitmapContextCreate(&pixel, 1, 1, 8, 4, colorSpace, alphaInfo)

   CGContextTranslateCTM(context, -point.x, -point.y);

   self.layer.renderInContext(context)

   return CGFloat(pixel[3])
}

您可以创建一个普通按钮,然后旋转它。在这种情况下,背景图像需要“旋转”version@jokeman我找不到旋转的选项,当初始化时,我如何做itTry
self.myButton.transform=self.myButton.transform.rotated(by:CGFloat(M_PI_4))
button@jokeman问题是,即使图像旋转,“蓝色方形线”仍然存在,我需要图片中的蓝线来匹配实际的钻石。上面的代码不会旋转图像,而是旋转按钮