labelcontrol 多行_ios – UISegmentedControl中的两行文本

尽我所能,我无法解决iOS7 iPhone应用程序的UISegmentedControl错误.

当我创建分段控件时,我使用以下代码:

NSArray *segmentedControlItemArray = [NSArray arrayWithObjects: @"Nominal:\n27 inch",@"Actual:\n700c x 23mm",@"Actual:\n700c x 20mm",nil];

_wheelDiameterSegmentedControl = [[UISegmentedControl alloc] initWithItems:segmentedControlItemArray];

_wheelDiameterSegmentedControl.frame = CGRectMake(0,102,290,50);

_wheelDiameterSegmentedControl.selectedSegmentIndex = 0;

_wheelDiameterSegmentedControl.tintColor = [UIColor colorWithRed:0.35 green:0.4 blue:0.9 alpha:1.0];

for (id segment in [_wheelDiameterSegmentedControl subviews]) {

for (id label in [segment subviews]) {

if ([label isKindOfClass:[UILabel class]]) {

UILabel *titleLabel = (UILabel *) label;

titleLabel.numberOfLines = 0;

}

}

}

[_wheelDiameterSegmentedControl addTarget:self

action:@selector(pickOne:)

forControlEvents:UIControlEventValueChanged];

[_wheelDiameterMenuContainer addSubview:_wheelDiameterSegmentedControl];

可悲的是,我无法发布图像,或者我会向您展示我想要的控件:UISegmented Control中的每个段都有两行文本,其中一行换行符合我的要求.

但是,在旋转时,我想保持分段控件的全宽,并且换行在宽段中看起来很傻.所以,在willAnimateRotationToInterfaceOrientation中,我包含了以下代码,字符串中没有换行符:

[_wheelDiameterSegmentedControl setFrame:CGRectMake(0,450,50)];

[_wheelDiameterSegmentedControl setTitle:@"Nominal: 27 inch" forSegmentAtIndex:0];

[_wheelDiameterSegmentedControl setTitle:@"Actual: 700c x 23mm" forSegmentAtIndex:1];

[_wheelDiameterSegmentedControl setTitle:@"Actual: 700c x 20mm" forSegmentAtIndex:2];

再一次,如果我可以插入图像,我会向您显示我想要的图像:一个宽的UISegmented控件,标签中没有换行符(每个标签1行文本).

这是我遇到麻烦的地方.当我旋转回肖像时,我的选择似乎是:

1行标签文本,截断,格式

“实际:7 ……”

当我只是重置UISegmentedControl的大小时

[_wheelDiameterSegmentedControl setFrame:CGRectMake(0,50)];

2行标签文本,格式

“实际:

700c x ……“

当我重置大小并重置字符串值并重新运行将标签的numberOfLines设置为2的代码循环时,使用

NSArray *segmentedControlItemArray = [NSArray arrayWithObjects: @"Nominal:\n27 inch",nil];

[_wheelDiameterSegmentedControl setTitle:[segmentedControlItemArray objectAtIndex:0] forSegmentAtIndex:0];

[_wheelDiameterSegmentedControl setTitle:[segmentedControlItemArray objectAtIndex:1] forSegmentAtIndex:1];

[_wheelDiameterSegmentedControl setTitle:[segmentedControlItemArray objectAtIndex:2] forSegmentAtIndex:2];

for (id segment in [_wheelDiameterSegmentedControl subviews]) {

for (id label in [segment subviews]) {

if ([label isKindOfClass:[UILabel class]]) {

UILabel *titleLabel = (UILabel *) label;

titleLabel.numberOfLines = 2;

}

}

}

[_wheelDiameterSegmentedControl setFrame:CGRectMake(0,50)];

3行标签文字,格式

“实际:

700c x

20毫米”

这是我用上面的强制numberOfLines = 2替换当我首先设置UISegmentedControl时使用的numberOfLines = 0时得到的.

我想要的是我在创建控件时得到的结果

“实际:

700c x 20mm“

但无论我尝试过什么(将字符串和numberOfLines代码放入willRotateToInterfaceOrientation或didRotateFromInterfaceOrientation;在更改文本之前重新设置UISegmentedControl的框架;在更改文本后重新设置框架……),我可以’得到我漂亮,整洁,两线的标签.我在这里想念的是什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值