我正在使用一个收缩手势识别器来处理缩放一个有图像的按钮。我使用以下命令建立了映像
[self.button setImage:image forState:UIControlStateNormal];
[self.button setImage:image forState:UIControlStateHighlighted];在我的收缩手势识别器处理程序中,我通过更改按钮的frame.size来缩放按钮:
self.button.frame = [self makeButtonFrame];其中makeButtonFrame使用当前比例(由收缩手势识别器处理程序调整):
- (CGRect) makeButtonFrame {
CGRect frame = CGRectMake (STROKE_WIDTH + DISTANCE_FROM_STROKE,
STROKE_WIDTH + DISTANCE_FROM_STROKE,
self.scale * self.defaultWidth,
self.scale * self.defaultHeight);
return frame;
}我发现我不能使用这种技术将按钮图像缩放到某个点以上。而且这种比例似乎取决于特定的图像(加倍!)。这一比例似乎在3-4左右。
目前,我保守地将我的握手手势识别器的比例限制在3倍。
然而,我想要一种更具分析性的方法来确定最大规模。而不是仅仅基于我尝试过的一组图像进行估计。
发布于 2013-07-02 10:28:13
不能确定,但我怀疑这个“限制”实际上是你的图像的大小。当你设置一个按钮的image (而不是backgroundImage)时,如果你的图像比边框大,你的图像就会被缩小。如果图像较小,那么它只是在框架中居中(框架仍然控制哪个区域对触摸做出反应)。我想你看到的是当你把它放在按钮上时,你的图像被缩小了,它会放大,直到它达到原来的大小,在这一点上,它不会再缩放了。有两种解决方案:
1:使用backgroundImage而不是image属性:
[self.button setBackgroundImage:image forState:UIControlStateNormal];无论背景图像有多大或者它对图像的扭曲程度有多大,背景图像总是会扩展以填充整个框架。
2:使用transform属性进行缩放。如下所示:
self.button.transform = CGAffineTransformMakeScale(scaleAmountX, scaleAmountY);这样做的好处是,您根本不需要调整帧-甚至不需要位置偏移,因为使用变换矩阵进行缩放是从中心而不是从角落进行缩放。它还应该对其放大区域内的触摸做出响应。
https://stackoverflow.com/questions/17415042
复制相似问题