我将捏合手势分配给了uiview:
myView.addGestureRecognizer(UIPinchGestureRecognizer(target: self, action: "handlePinch:"))
此功能将缩放uiview:
func handlePinch(recognizer : UIPinchGestureRecognizer) {
if let view = recognizer.view {
view.transform = CGAffineTransformScale(view.transform,
recognizer.scale, recognizer.scale)
recognizer.scale = 1
}
}
但是父视图中的比例不受限制。当我试图将其缩小时,它也没有限制,它会缩小直到它消失。
灰色视图是父
我的问题是
如何防止在按比例放大时超出父框架并在按比例缩小时消失?
答案 0 :(得分:4)
您可以使用以下内容:
SELECT COUNT(*) FROM `users_table`
WHERE date(CONVERT_TZ(`reg_date`, '-0:00', '-7:00')) >= DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY)
AND date(CONVERT_TZ(`reg_date`, '-0:00', '-7:00')) <= DATE_SUB(CONCAT(CURDATE(), ' 23:59:59'), INTERVAL 1 DAY)
这里的关键是根据偏好决定下限,以及基于视图初始大小与父级大小之比的上限。通过这样做,视图不能缩小到比期望的更小,因为假设用户不应该缩小到由于难以收缩而无法调整大小的点。此外,不应允许视图无限扩展,从而溢出其边界。这种检查就是这样,因为它只允许您指定的一系列尺寸由用户的交互设置。
答案 1 :(得分:0)
我编写了一个函数来测试捏合是否超出父视图的边界。
/// test if an origin frame scale would be within the boundary of parent view
func scaleWithinBoundary(originFrame:CGRect, parent:UIView, scale:CGFloat) -> Bool {
let height = originFrame.height * scale
let width = originFrame.width * scale
let leftX = originFrame.midX - width/2, rightX = originFrame.midX + width/2
let topY = originFrame.midY - height/2, bottomY = originFrame.midY + height/2
return leftX >= 0 && topY >= 0 && leftX >= parent.frame.minX && rightX <= parent.frame.maxX
&& topY >= parent.frame.minY && bottomY <= parent.frame.maxY
}