setBackgroundImage和setImage

本文介绍了iOS开发中UIButton使用setBackgroundImage与setImage的区别。当需要设置按钮的frame与图片大小一致时,仅使用setImage会导致frame为nil,而使用setBackgroundImage则可以解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

setBackgroundImage和setImage这两个还是有区别的

例如:

当你需要设置按钮的frame为当前图片的frame时候,如果用setImage,那么frame为nil  这时,只能用setBackgroundImage 才能使得按钮的frame为image的frame

UIButton * backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setImage:[UIImage imageNamed:@"---"] forState:UIControlStateNormal];
CGRect tempFrame = backBtn.frame;
tempFrame.size = backBtn.currentBackgroundImage.size;
backBtn.frame = tempFrame;

 

此时,backBtn的frame 为nil

 

UIButton * backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setBackgroundImage:[UIImage imageNamed:@"---"] forState:UIControlStateNormal];


CGRect tempFrame = backBtn.frame;
tempFrame.size = backBtn.currentBackgroundImage.size;
backBtn.frame = tempFrame;

 


此时,backBtn的frame 为image的frame
 

`setButtonImage()`似乎不是一个标准的iOS API,而是可能来自某个自定义控件或者特定项目中的命名。从提供的引用来看,它涉及到按钮图像设置的相关操作。 1. **设置背景图像**[^1]: 当创建一个按钮时,如果`setButtonImage`不是直接在按钮初始化时调用,而是在后续的方法中,如`setButtonImage`提到的`setBackgroundImage`被用来设置按钮在被按下(`UIControlStateHighlighted`状态)时的背景图像: ```swift NDTSelectButton *button = [NDTSelectButton buttonWithType:UIButtonTypeCustom]; // ... [button setBackgroundImage:[UIImage imageNamed:button.selectImageName] forState:UIControlStateHighlighted]; ``` 2. **设置普通状态下的图像**[^2]: - `setImage`通常用于设置按钮的普通状态(`UIControlStateNormal`)的图标,图片不会被拉伸填充整个按钮,而是保持原尺寸居中显示: ```swift btn.setImage:[UIImage imageNamed:@"123"] forState:(UIControlStateNormal)]; ``` - 而`setBackgroundImage`则用于设置按钮背景,当图片小于按钮时会填充整个按钮区域: ```swift [btn setBackgroundImage:[UIImage imageNamed:@”123”] forState:(UIControlStateNormal)]; ``` 3. **访问并设置图像名称**: 如果`selectImageName``unSelectImageName`代表不同的选中/未选中状态的图像,那么可以在适当的地方更新这些图像名: ```swift NSLog(@"button.selectImageName %@ --- %@", self.selectImageName, self.unSelectImageName); // 这里可以替换为更改按钮图像的代码 [self setBackgroundImage:[UIImage imageNamed:self.unSelectImageName] forState:UIControlStateHighlighted]; ``` 总结来说,`setButtonImage`可能涉及到了设置按钮不同状态下的图像,包括背景图标。具体实现取决于上下文中的自定义类`NDTSelectButton`的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值