加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – UIImage resizableImageWithCapInsets:不能按预

发布时间:2020-12-14 20:06:40 所属栏目:百科 来源:网络整理
导读:我正在撰写面向iOS 5.0平台的第一个iOS应用程序.我使用UIAppearance协议自定义应用程序UI. 我试图在整个应用程序中更改UIBarButtonItem的背景.由于事实上,我的UIBarButtonItem可能根据所使用的文本或图标改变大小我试图利用UIImage resizableImageWithCapIns
我正在撰写面向iOS 5.0平台的第一个iOS应用程序.我使用UIAppearance协议自定义应用程序UI.

我试图在整个应用程序中更改UIBarButtonItem的背景.由于事实上,我的UIBarButtonItem可能根据所使用的文本或图标改变大小我试图利用UIImage resizableImageWithCapInsets:与我的背景png.

我最初在Ray Wenderlich上找到了我需要的代码.使用相同的确切代码,与上述教程中使用的图像非常接近的图像,我得到了奇怪的结果.也许这只是我对Cocoa Touch的缺乏经验.

这是我正在使用的代码.

DreamsAppDelegate.m – customizeAppearance:

UIImage *btnBg = [[UIImage imageNamed:@"navBarButton-bg"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0,6,6)];

[[UIBarButtonItem appearance] setBackgroundImage:btnBg 
                                        forState:UIControlStateNormal 
                                      barMetrics:UIBarMetricsDefault];

这是我正在尝试使用的png背景图片

这里是结果(在模拟器中)

解决方法

您的图像在左侧和右侧之间以及顶部和底部之间的部分将被平铺以填满图像所需的空间.尝试UIEdgeInsetsMake(15,15,6).

要推广,如果您的图像具有连续的渐变,重复的部分应该只有1像素高.由于您的按钮图像高31像素,因此顶部和底部(UIEdgeInsetsMake的第一个和第三个参数)应添加到30.它们不一定相等; UIEdgeInsetsMake(8,22,6)将重复的部分向上移动,导致较浅的背景.

此外,您附加的文件是平面还是视网膜(‘@ 2x’)版本的图像?插图必须在普通版本的大小之内.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读