这是我第一次设计iOS应用,所以我想确保正确理解这种行为。
我在Photoshop中为导航栏设计了一个自定义栏按钮图标。我在Photoshop中保存的最终图像是102 x 45,是的,我发现这些尺寸比iOS 7设计指南中推荐的44x44大。
无论如何,我将我的图像放入资源文件夹,然后使用以下代码以编程方式设置条形按钮项:
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;
如您所见,我将框架的宽度和高度设置为图像的确切大小。当我第一次运行应用程序时,我不喜欢这个图像,并认为它太大了。所以我在这个语句中更改了width和height参数:
CGRect frame = CGRectMake(0, 0, 70, 30);
现在iPhone屏幕上的图像看起来很完美。这是在iPhone 4s上。
所以我的主要问题是,当我改变帧大小时实际发生了什么?由于框架现在小于实际图像尺寸,图像是否会自动缩小以适应框架内部?
答案 0 :(得分:3)
是的,因为您使用backgroundImage
(而不是Image
),图片会缩放。两张图片都有不同的行为。
检查 Xcode Interface Builder ,您可以看到,您可以设置两个图像:图像和背景。背景是为UIImage
的整个帧缩放的UIButton
。
UIButton Class Reference可让您访问imageView
的{{1}}(而不是image
的{{1}}
由于您可以访问imageView
,因此您可以使用以下方式更改图像模式:
backgroundImage
在UIView Class Reference中,您可以查看Apple提供的所有imageView
。
您可以检查更改一下代码:
[[someButton imageView] setContentMode:UIViewContentModeBottomLeft];