【问题标题】:Maximum zoom scale on UIButton images?UIButton图像的最大缩放比例?
【发布时间】:2013-07-01 23:06:22
【问题描述】:

我正在使用捏合手势识别器来处理缩放具有图像的按钮。我使用

建立了图像
[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 倍。

但是,我想要一种更具分析性的方法来确定最大比例。而不是仅仅根据我尝试过的一组图像进行估计。

【问题讨论】:

  • “不能将按钮图像缩放到某个点之外”是否意味着缩放太多会使按钮图像看起来很糟糕,或者 ???您可以查看image.size 并根据它设置最大比例(即,不要将按钮缩放到超出图像大小)。
  • 我的意思是,改变按钮的框架来增加它的大小是没有效果的。它保持原来的大小。我会看一下image.size。谢谢。

标签: ios uibutton uiimage


【解决方案1】:

不能肯定地说,但我怀疑这个“限制”实际上是您图像的大小。当您设置按钮的image(而不是backgroundImage)时,如果图像大于框架,您的图像将按比例缩小。如果图像更小,那么它只是在框架中居中(尽管框架仍然控制响应触摸的区域)。我想你看到的是当你把它放在按钮中时你的图像缩小了,它放大了直到它达到它的原始大小,此时它不再缩放。有两种解决方案:

1:使用backgroundImage 代替图像属性:

[self.button setBackgroundImage:image forState:UIControlStateNormal];

无论背景图像有多大或图像扭曲程度如何,它总是会扩展以填充框架。

2:使用transform 属性进行缩放。这样做是这样的:

self.button.transform = CGAffineTransformMakeScale(scaleAmountX, scaleAmountY);

这样做的好处是您根本不需要调整框架 - 甚至不需要调整位置偏移,因为使用变换矩阵进行缩放是从中心而不是从角落进行的。它还应该响应其放大区域内的触摸。

【讨论】:

  • 是的,“限制”是图像的实际大小。我刚刚检查了这个。我使用了你的 backgroundImage 方法建议,它就像一个魅力。感谢您的想法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多