- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.textData = @[@"OC", @"Swift", @"我喜歡敲代碼", @"敲代碼使我快樂", @"致喜歡敲代碼的你", @"啦啦啦啦啦啦啦啦啦", @"啦", @"啦啦啦啦啦啦啦啦啦啦啦", @"啦啦啦啦啦啦啦啦啦啦啦驕傲驕傲驕傲驕傲家具啊", @"哈哈哈", @"wawahaha", @"ok"];
self.backgroundView = [[UIView alloc] init];
self.backgroundView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:self.backgroundView];
[self createLabel];
}
- (void)createLabel {
NSDictionary *dic = [self getFirstLabelLeft:0];
NSInteger changeLineIndex = [dic.allKeys.firstObject integerValue];
CGFloat rectX = [dic.allValues.firstObject floatValue];
CGFloat rectY = 10.0;
// 標簽按鈕
for (int i = 0; i < self.textData.count; i ++) {
NSString *labelText = self.textData[i];
UILabel *centerLabel = [[UILabel alloc] init];
centerLabel.font = [UIFont systemFontOfSize:10];
centerLabel.textAlignment = NSTextAlignmentCenter;
centerLabel.text = labelText;
centerLabel.textColor = [UIColor brownColor];
centerLabel.layer.borderColor = [UIColor whiteColor].CGColor;
centerLabel.layer.borderWidth = 0.5;
centerLabel.layer.cornerRadius = 2;
centerLabel.layer.masksToBounds = YES;
[centerLabel sizeToFit];
CGFloat rectW = centerLabel.bounds.size.width + 6.0;
if (i > 0) {
// 前一個label
NSString *foreLabelText = self.textData[i - 1];
UILabel *foreLabel = [[UILabel alloc] init];
foreLabel.font = [UIFont systemFontOfSize:10];
foreLabel.textAlignment = NSTextAlignmentCenter;
foreLabel.text = foreLabelText;
[foreLabel sizeToFit];
_labelWidth = foreLabel.frame.size.width + 6.0;
// 判斷是否是換行的icon
if (i == changeLineIndex) {
rectY = rectY + 10.0 * 2;
NSDictionary *secondDic = [self getFirstLabelLeft:changeLineIndex];
rectX = [secondDic.allValues.firstObject floatValue];
changeLineIndex = [secondDic.allKeys.firstObject integerValue];
} else {
rectX = rectX + _labelWidth + 4.0;
}
}
centerLabel.frame = CGRectMake(rectX, rectY, rectW, centerLabel.bounds.size.height + 10.0 / 2);
centerLabel.tag = i + 100;
[self.backgroundView addSubview:centerLabel];
_centerLabelBottom = CGRectGetMaxY(centerLabel.frame);
}
self.backgroundView.frame = CGRectMake(0.0, 50.0, [UIScreen mainScreen].bounds.size.width, _centerLabelBottom + 10.0);
}
/**
獲取每行首個label的x坐標
@param index <#index description#>
@return <#return value description#>
*/
- (NSDictionary *)getFirstLabelLeft:(NSInteger)index {
CGFloat labelWidth = 0.0;
NSInteger endIndex = 0;
for (NSInteger i = index; i < self.textData.count; i ++) {
NSString *labelText = self.textData[i];
UILabel *centerLabel = [[UILabel alloc] init];
centerLabel.font = [UIFont systemFontOfSize:10];
centerLabel.textAlignment = NSTextAlignmentCenter;
centerLabel.text = labelText;
centerLabel.textColor = [UIColor brownColor];
centerLabel.layer.borderColor = [UIColor whiteColor].CGColor;
centerLabel.layer.borderWidth = 0.5;
centerLabel.layer.cornerRadius = 2;
centerLabel.layer.masksToBounds = YES;
[centerLabel sizeToFit];
labelWidth += centerLabel.bounds.size.width + 6.0 + 4.0;
if (labelWidth >= [UIScreen mainScreen].bounds.size.width - 10.0 * 6) {
labelWidth = labelWidth - centerLabel.bounds.size.width - 6.0 - 4.0;
endIndex = i;
break ;
}
}
return @{[NSString stringWithFormat:@"%ld", endIndex] : [NSNumber numberWithFloat:([UIScreen mainScreen].bounds.size.width - labelWidth) / 2.0]};
}
多個label在view中居中顯示
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- Xamarin XAML語言教程構建ControlTemplate控件模板 控件模板ControlTemplate...