目的:使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()方法。