UIView层次管理(sendSubviewToBack,bringSubviewToFront)

本文介绍了一种使UISegmentControl中每个Item的标题能够换行显示的方法。通过在segment上覆盖一层UILabel,并调整UILabel的层级关系实现换行效果。

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

目的:使segment上每一个Itemtitle可以换行显示。

方法:在segment control上蒙一层label,控制label,让labeltext换行显示。

遇到的困难:无法将label放置在segment上。

分析原因:一开始我就犯了一个错,那就是把mySegment作为self.view的子层,把labelA作为mySegment的子层,然后管理labelAmySegment,让labelAmySegment之上。

解决办法:将labelAmySegment都放在self.view层上,然后在利用sendSubviewToBackbringSubviewToFront来控制其层次关系。


- (void)viewDidLoad {
    [super viewDidLoad];
 
 UILabel *labelA = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 100, 43)];
 labelA.lineBreakMode = UILineBreakModeWordWrap;
 labelA.numberOfLines = 0;
 [labelA setTextAlignment:UITextAlignmentCenter];
 [labelA setBackgroundColor:[UIColor clearColor]];
 labelA.text = @"ABCDEFGHIJ";
 
        ... ...

 UISegmentedControl *mySegment = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@" ",@" ",@" ",nil]];
 [mySegment setFrame:CGRectMake(10, 0, 300, 43)];
 [mySegment setSelectedSegmentIndex:0];

 [self.view addSubview:mySegment];
 [self.view addSubview:labelA];
 [self.view sendSubviewToBack:mySegment];
 ... ...
 [mySegment release];
 [labelA release];
 ... ...
}



附:

将一个UIView显示在最前面只需要调用其父视图的bringSubviewToFront()方法。

将一个UIView层推送到背后只需要调用其父视图的sendSubviewToBack()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值