首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当使用initWithFrame时,缩小UIButton的背景图像:

当使用initWithFrame时,缩小UIButton的背景图像:
EN

Stack Overflow用户
提问于 2014-04-09 20:46:40
回答 1查看 1K关注 0票数 3

这是我第一次设计一个iOS应用程序,所以我想确保我正确地理解了这个行为。

我为Photoshop中的导航栏设计了一个自定义的条形按钮图标。我在Photoshop中保存的最后一张图片是102x45,是的,我意识到这些尺寸比iOS 7设计指南中推荐的44x44要大。

无论如何,我将图像放在资产文件夹中,然后以编程方式使用以下代码设置bar按钮项:

代码语言:javascript
运行
复制
UIImage* firstButtonImage = [UIImage imageNamed:@"loginbutton1"];

    CGRect frame = CGRectMake(0, 0, 102, 45);

    UIButton * someButton = [[UIButton alloc] initWithFrame:frame];
    [someButton setBackgroundImage:firstButtonImage forState:UIControlStateNormal];
    [someButton addTarget:self action:@selector(didTapLoginButton:)
         forControlEvents:UIControlEventTouchUpInside];

    self.rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:someButton];

    self.navItem.rightBarButtonItem = self.rightBarButton;

如您所见,我将帧的宽度和高度设置为图像的确切大小。当我第一次运行这个应用程序时,我不喜欢这张图片,觉得它太大了。因此,我在这个语句中更改了宽度和高度参数:

代码语言:javascript
运行
复制
CGRect frame = CGRectMake(0, 0, 70, 30);

现在,图像在iPhone屏幕上看起来很完美。这是在iPhone 4s上。

所以我的主要问题是,当我改变帧的大小时,到底发生了什么?由于现在的帧小于实际的图像大小,那么图像是否会自动缩小以适应帧内的需要?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 22:21:53

是的,因为您使用的是backgroundImage (而不是Image),所以图像会被缩放。这两种图像都有不同的行为。

检查Xcode接口生成器,您可以在那里看到,您可以设置两个图像:图像和背景。背景是对整个UIImage框架进行缩放的UIButton

UIButton类引用允许您访问imageimageView (而不是backgroundImageimageView)。

因为您可以访问imageView,所以可以用以下方式更改图像的模式:

代码语言:javascript
运行
复制
[[someButton imageView] setContentMode:UIViewContentModeBottomLeft];

UIView类引用中,您可以检查苹果提供的所有UIViewContentModes

您可以检查是否更改了代码:

代码语言:javascript
运行
复制
[someButton setImage:firstButtonImage forState:UIControlStateNormal];
[[someButton imageView] setContentMode:UIViewContentModeBottomRight];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22973573

复制
相关文章

相似问题

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