【发布时间】:2011-08-11 14:33:57
【问题描述】:
我有一个指定宽度为 200 的UIButton。它的autoresizingMask 属性设置为UIViewAutoresizingFlexibleWidth。 UIImage 应用于此按钮的 backgroundImage 属性。这个UIimage定义如下:
[[UIImage imageNamed:@"buttonimage.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0]
buttonimage.png 的宽度为 400 像素(按钮宽度的 2 倍,因为视网膜分辨率)并表示一个圆角矩形。在纵向模式下,一切都很好。一旦用户旋转设备并且 iPhone 进入横向模式,UIButton 就会被拉伸。由于这种行为,图像的左圆角边框保持不变(stretchableImageWithLeftCapWidth:),但右上角也会被拉伸。是否有任何我忘记设置的属性来确保只有一个指定的像素(例如第十个)被拉伸而其他任何东西都保持它的尺寸?
提前致谢!
编辑:如果我使用已在纵向模式下拉伸的较小图像,则两个边框似乎都被扩展了。
解决了! 如果您的图像名为“myImage.png”并且是视网膜版本,则只需将其命名为“myImage@2x.png”
【问题讨论】:
-
您应该提供非视网膜尺寸的
buttonimage.png和视网膜尺寸名称buttonimage@2x.png的第二个版本。也许这可以解决您的问题。 -
这种行为发生在非视网膜和视网膜分辨率支持的设备上。如果我理解正确的话, buttonimage@2x.png 文件是唯一被具有视网膜分辨率的设备访问的文件,所以这没有什么区别。如果我错了,请纠正我。
-
正确。我尝试了一个简单的例子,并且有一个有趣的效果,当我将左帽设置为像 3px 这样的少量时,它会沿着整个按钮涂抹这部分,而其余部分则正确地与右侧对齐。景观看起来一样。我的按钮图像是 50x50,当我将左帽设置为 21px 时,正好在圆角之后,即使在横向上它看起来也不错。也许一些尝试和错误会做?
-
我现在添加了一个非视网膜版本的按钮,突然它就起作用了。谢谢。
标签: iphone objective-c uikit uibutton uiimage