self.DataArr = @[@"标签一",@"标签二",@"标签三"];
- (void)createUI{
CGFloat tagBtnX = 0;
CGFloat tagBtnY = 0;
for (NSInteger i= 0; i<self.DataArr.count; i++) {
CGSize tagTextSize = [self. sizeWithFont:[UIFont systemFontOfSize:16] maxSize:CGSizeMake(WIDTH-32-32, 32)];
if (tagBtnX+tagTextSize.width+40 > WIDTH-32) {
tagBtnX = 0;
tagBtnY += 30+16;
}
UIButton * tagBtn = [UIButton buttonWithType:UIButtonTypeCustom];
tagBtn.tag = 100+i;
tagBtn.frame = CGRectMake(tagBtnX, tagBtnY, tagTextSize.width+40, 32);
[tagBtn setTitle:self.DataArr[i] forState:UIControlStateNormal];
tagBtn.titleLabel.font = [UIFont systemFontOfSize:16];
[HSMTOOL changeRoundLayerWithView:tagBtn WithRedio:16];
if (i == 0) {
[tagBtn setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
}
[tagBtn addTarget:self action:@selector(tagBtnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.BGView addSubview:tagBtn];
tagBtnX = CGRectGetMaxX(tagBtn.frame)+11;
}
}
-(void)tagBtnClick:(UIButton *)button{
button.tag -100;
}
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize
{
// if (self.length <= 0) {
// CGSize sizee = CGSizeMake(0.01f, 0.01f);
// return sizee;
// }else{
NSDictionary *attrs = @{NSFontAttributeName : font};
return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
// }
}
该博客详细介绍了如何使用Swift编程语言为iOS应用创建自定义的标签布局。通过遍历数据数组并计算每个标签的尺寸,动态调整布局,实现标签在屏幕上的排列。文章涵盖了标签按钮的初始化、设置属性、点击事件处理以及布局更新等内容,适用于希望提升用户界面灵活性的iOS开发者。
2119

被折叠的 条评论
为什么被折叠?



