问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何更改UISwitch的提示文本

发布网友 发布时间:2022-04-30 04:37

我来回答

1个回答

热心网友 时间:2022-04-21 14:15

UISwitch(如下图)可以认为是其他UI库中Checkbox的替代品,但所呈现的内容更丰富,包括文本、颜色、动画。默认情况下,UISwitch的提示文本分别是ON和OFF,并很好地支持国际化以在不同区域语言下显示不同的文字,但由于无法定制导致在有些应用场景中显得不是很准确。比如在询问是否同意时希望提示文本可以是YES和NO,判断是否正确则应该是TRUE和FALSE等等。为此需要对UISwitch进行扩展。考虑到继承会导致控件继承关系太深,因此采用了Objective C的特性之一的Category。
实现的主要原理就是找到UISwitch中用于显示文本的UILabel控件并打标记以便在需要设定文本的时候访问到相应控件。
Category声明:
@interface UISwitch (CustomText)
+ (UISwitch *) switchWithLeftText: (NSString *) tag1 andRight: (NSString *) tag2;
@property (nonatomic, readonly) UILabel *label1;
@property (nonatomic, readonly) UILabel *label2;
@end
Category实现:
#define TAG_OFFSET 900
@implementation UISwitch (CustomText)
- (void) locateAndTagAndTag: (UIView *) aView withCount:(int *) count
{
for (UIView *subview in [aView subviews])
{
if ([subview isKindOfClass:[UILabel class]])
{
*count += 1;
[subview setTag:(TAG_OFFSET + *count)];
}
else
[self locatelocateAndTagAndTag:subview withCount:count];
}
}
- (UILabel *) label1
{
return (UILabel *) [self viewWithTag:TAG_OFFSET + 1];
}
- (UILabel *) label2
{
return (UILabel *) [self viewWithTag:TAG_OFFSET + 2];
}
+ (UISwitch *) switchWithLeftText: (NSString *) tag1 andRight: (NSString *) tag2
{
UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
int labelCount = 0;
[switchView locateAndTag:switchView withCount:&labelCount];
if (labelCount == 2)
{
[switchView.label1 setText:tag1];
[switchView.label2 setText:tag2];
}
return [switchView autorelease];
}
@end
在实际应用中,实例化定制的UISwitch的代码如下:
UISwitch *switch = [UISwitch switchWithLeftText:@"YES" andRight:@"NO"];
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离过年还有2个月,是找工作,还是等过年? 还有两个多月就过年了,我是现在找工作呢还是过完年再找呢?现在找工作是... i57300u处理器属于什么水平 i5-7300u处于什么水平 国家线2024考研分数线是多少 电脑软件使用记录如何查看电脑当天的使用记录 在哪里查电脑最近使用情况怎么查看笔记本电脑的使用记录 英语题急求 ...以前都是以1MB/s速度下载,但是现在都不到300K/s,是不是WiFi路由器... 我家4兆的网线1台电脑可是我今天测网速时却只有16KB/S 这是为什么啊 pactwithswitch怎么玩 switch shift是什么意思? case后面表达式类型必须与swith后面表达式类型一致是什么意思 初中英语选择题5道,要解释~ Multilayer Switch with Route是什么意思 用英语表示转换部门,能用switch这个单词么?如Just switched to a new department. 昨天梦见捡到一只狗,是何寓意? switch这个单词怎么读? switch with socket with usb 是什么意思 九阳豆浆机,今天早上开始,一插就跳闸 九阳豆浆机为什么会打着打着突然跳闸? 豆浆机一加热家里就跳闸 怎么回事? 九阳豆浆机JYDZ-102经维修后,到家一插电源就跳闸,而在维修部一切正常。 九阳D58SG豆浆机一使用就跳闸是怎么回事? 1500瓦的豆浆机在家里用一开高速电就跳闸为什么? 九阳豆浆机 我家的豆浆机在厨房的插座上一插就跳闸,拿到别的地方插就没事?! 那位大能可以解释一下…… 美的豆浆机一插电就跳闸是什么原因 豆浆机插头一插就跳闸,换个插头就没事了,是什么原因 豆浆机一插上就断电怎么回事 ...买了美的豆浆机。在厨房的时候为什么一插电就跳闸。但是别的可以用... 谁有苏教版的小学四年级下册科学实验复习题资料? exchange和switch的分别? 谁有苏教版四年级下册科学复习题 苏教版四年级下册科学期末试卷及答案 hit sb with a switch都有啥意思? 急用苏教版小学科学四年级下册试卷 四年级下册期中科学复习提纲 有没有小学四年级下半学期 语文,英语,数学,科学的复习资料? 苏教版小学四年级下册科学期末测试 苏教版四年级下册科学期末试卷 四年级下册复习资料,要精髓!! 苏教版四年级下册语文复习资料有哪些完毕 小学四年级科学统考复习资料 人寿康宁2019投保人豁免,被保险人豁免是啥意思? 苏教版四年级下数学复习资料试题 苏教版科学四年级下册应该怎么背 百度搜索界面下面,有设置、推荐的新闻什么的,怎么设置出来? ASP中怎么将表单中的数据提交到连接的数据库中 百度工具栏突然不见了有鼠标右键怎么也点不出来是什么原因造成的?怎么恢复? 百度通栏怎么设置才能出来