UIView层次管理(sendSubviewToBack,bringSubviewToFront)

简介: UIView层次管理(sendSubviewToBack,bringSubviewToFront)

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

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

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

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

解决办法:将 labelA和 mySegment都放在 self.view层上,然后在利用

sendSubviewToBack,bringSubviewToFront来控制其层次关系。
- (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()方法。


相关文章
AVPlayerItem、AVPlayer、AVPlayerLayer三者关系
AVPlayerItem、AVPlayer、AVPlayerLayer三者关系
87 0
SwiftUI极简教程04:VStack, HStack, ZStack视图排列的使用(下)
SwiftUI极简教程04:VStack, HStack, ZStack视图排列的使用(下)
706 1
SwiftUI极简教程04:VStack, HStack, ZStack视图排列的使用(下)
|
iOS开发 开发者
iOS开发-简述UITableView中cell的重用问题
iOS开发-简述UITableView中cell的重用问题
199 0
|
自然语言处理 iOS开发
SwiftUI极简教程03:VStack, HStack, ZStack视图排列的使用(上)
SwiftUI极简教程03:VStack, HStack, ZStack视图排列的使用(上)
1475 0
SwiftUI极简教程03:VStack, HStack, ZStack视图排列的使用(上)
SwiftUI—创建两层嵌套的滚动视图
SwiftUI—创建两层嵌套的滚动视图
568 0
SwiftUI—创建两层嵌套的滚动视图
|
容器
UIView与CALayer的关系
UIView与CALayer的关系
483 0
|
前端开发 Swift iOS开发
SwiftUI直通车系列(1)—— 视图的布局与组织
SwiftUI直通车系列(1)—— 视图的布局与组织
221 0
SwiftUI直通车系列(1)—— 视图的布局与组织
重构——65折叠继承体系(Collapse Hierarchy)
折叠继承体系(Collapse Hierarchy):超类和子类之间无太大区别;将它们合为一体
2000 0