首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIButton图像的最大缩放比例?

UIButton图像的最大缩放比例?
EN

Stack Overflow用户
提问于 2013-07-02 07:06:22
回答 1查看 613关注 0票数 0

我正在使用一个收缩手势识别器来处理缩放一个有图像的按钮。我使用以下命令建立了映像

代码语言:javascript
复制
[self.button setImage:image forState:UIControlStateNormal];
[self.button setImage:image forState:UIControlStateHighlighted];

在我的收缩手势识别器处理程序中,我通过更改按钮的frame.size来缩放按钮:

代码语言:javascript
复制
self.button.frame = [self makeButtonFrame];

其中makeButtonFrame使用当前比例(由收缩手势识别器处理程序调整):

代码语言:javascript
复制
- (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倍。

然而,我想要一种更具分析性的方法来确定最大规模。而不是仅仅基于我尝试过的一组图像进行估计。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-02 10:28:13

不能确定,但我怀疑这个“限制”实际上是你的图像的大小。当你设置一个按钮的image (而不是backgroundImage)时,如果你的图像比边框大,你的图像就会被缩小。如果图像较小,那么它只是在框架中居中(框架仍然控制哪个区域对触摸做出反应)。我想你看到的是当你把它放在按钮上时,你的图像被缩小了,它会放大,直到它达到原来的大小,在这一点上,它不会再缩放了。有两种解决方案:

1:使用backgroundImage而不是image属性:

代码语言:javascript
复制
[self.button setBackgroundImage:image forState:UIControlStateNormal];

无论背景图像有多大或者它对图像的扭曲程度有多大,背景图像总是会扩展以填充整个框架。

2:使用transform属性进行缩放。如下所示:

代码语言:javascript
复制
self.button.transform = CGAffineTransformMakeScale(scaleAmountX, scaleAmountY);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17415042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档