最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

[已解决]将UIImage的ObjC初始化代码转换为Swift代码

Swift crifan 2675浏览 0评论
[背景]
需要将对应的ObjC 代码:
UIImage *image = [[UIImage imageNamed:@"MHTabBarActiveTab"] stretchableImageWithLeftCapWidth:0 topCapHeight:0];

转换为Swift代码。

刚刚已经试了试,利用Xcode的动态提示,用了那个:

UIImage(named: "RecordTabBarController", inBundle: <#T##NSBundle?#>, compatibleWithTraitCollection: <#T##UITraitCollection?#>)

但是接下来不会写了。

[折腾过程]
1.搜:
swift ObjC UIImage imageNamed
swift UIImage imageNamed stretchableImageWithLeftCapWidth
参考:
UIImage Class Reference
2.结果写了:
let image:UIImage = UIImage(named: "RecordTabBarController")?.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, ))
后,没法继续写了,因为不知道此处的出了top,left,之外的bottom和right的值应该写多少。
所以去搜:
swift resizableImageWithCapInsets example
参考:
-》
以及另外两篇中文:
难道是:
此处的UIEdgeInsetsMake全部设置0,即可?
3.需要搞懂什么是cap insets:
4.此处,基本上看懂了:
之前的图片拉伸缩放,用了:
stretchableImageWithLeftCapWidth
其中
left=0-》水平方向全部都正常缩放
top=0-》垂直方向全部都正常缩放
所以此处,等价于:
调用:
resizableImageWithCapInsets,传入0,0,0,0即可。
对应的官网的解释,此刻也就容易看懂了:
所以,对应的代码就是很简单的:
[总结]
resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0)

整行的代码是:

let image:UIImage = (UIImage(named: "RecordTabBarController")?.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0)))!
 就可以通过编译了。

转载请注明:在路上 » [已解决]将UIImage的ObjC初始化代码转换为Swift代码

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
84 queries in 0.170 seconds, using 22.10MB memory