我在這裏遇到問題。我希望按鈕能夠完美地適應背景圖像的尺寸。縮放按鈕以適應背景圖像
例如:
正如你可以看到,圍繞「請求計劃」鑽石箱重疊或越過「查看計劃」的鑽石,並在運行時,當我點擊「查看計劃」鑽石由於它重疊而實際點擊「請求計劃」鑽石。有沒有辦法解決這個問題?
我在這裏遇到問題。我希望按鈕能夠完美地適應背景圖像的尺寸。縮放按鈕以適應背景圖像
例如:
正如你可以看到,圍繞「請求計劃」鑽石箱重疊或越過「查看計劃」的鑽石,並在運行時,當我點擊「查看計劃」鑽石由於它重疊而實際點擊「請求計劃」鑽石。有沒有辦法解決這個問題?
您可以創建CustomButton
類擴展的UIButton然後覆蓋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
值
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])
}
在故事板中,無論您希望相等長度,只需拖動到其他對象並選擇「等寬」和「等長」即可。關於重疊,可能要麼改變按鈕或視圖的順序,要麼重新創建它。
檢查,您可以創建一個正常的按鈕,然後將其旋轉。在這種情況下,你的背景圖像需要被「旋轉」版本 – jokeman
@jokeman我無法找到一個旋轉選項,我該怎麼做 – user3694341
嘗試'self.myButton.transform = self.myButton.transform.rotated(by:CGFloat( M_PI_4))'當初始化你的按鈕 – jokeman