emr*_*kyv 2 uikit ios ios5 ios6
我正在尝试自定义iOS 5中的后退按钮.这是我想要使用的背景图像:

这是23 x 30点.
我的自定义代码是:
UIImage *buttonBackground = [[UIImage imageNamed:@"navbar-backbutton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 11, 0, 11) resizingMode:UIImageResizingModeStretch];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Geri" style:UIBarButtonItemStylePlain target:nil action:nil];
[backButton setBackButtonBackgroundImage:buttonBackground forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.navigationItem setBackBarButtonItem:backButton];
Run Code Online (Sandbox Code Playgroud)
这应该是技巧,图像的宽度是23点,我设置左右偏移11点.但这是结果("Geri"在土耳其语中意为"后退"):

我不明白的是最后的尺寸差异.我不确定我做错了什么.关于这个的任何想法?
谢谢.
Dan*_*iel 11
您UIEdgeInsets对正在使用的图像不正确,您告诉用户界面过早开始拉伸图像.您应该更改您的左侧值UIEdgeInsets以开始向右伸展几个点.
我注意到你评论了另一个答案,你不明白边缘插入是如何工作的.所以我为你画了这个.

黑色线条代表图像的边框.橙色线代表您希望图像可伸展的区域.请注意,当按钮的圆角部分结束时,左帽会出现.右边的帽子出现在右边缘的圆角之前.
您可以使用,将此表示给UIKit UIEdgeInsets.
UIEdgeInsets定义如下(见文档):
typedef struct {
CGFloat top, left, bottom, right;
} UIEdgeInsets;
Run Code Online (Sandbox Code Playgroud)
在您的情况下,我下载了您尝试使用的按钮,我发现左上角应该从14像素开始.右上角应为18像素(距右边缘5个像素).
因此,您应该使用以下边缘插图来正确调整图像大小:
UIEdgeInsets correctInsets = UIEdgeInsetsMake(0.0, 14.0, 0.0, 5.0);
Run Code Online (Sandbox Code Playgroud)
另请注意,UIImage您使用的调整大小方法仅适用于iOS 6:
-resizableImageWithCapInsets:resizingMode:
Run Code Online (Sandbox Code Playgroud)
您应该使用此方法来使这在iOS 5中正常工作:
-resizableImageWithCapInsets:
Run Code Online (Sandbox Code Playgroud)
请参阅UIImage文档
| 归档时间: |
|
| 查看次数: |
2218 次 |
| 最近记录: |