zoukankan      html  css  js  c++  java
  • 根据服务器端返回的字符数组,展示字符串标签,需要涉及字符串长度处理以及字符串换行,字符串不够一行自动跳到第二行的逻辑

     NSArray * titleArray = @[@"#蓝色",@"#针织衫",@"#印花",@"#收腿裤",@"#豹纹",@"针织衫",@"周彦彤",@"JSON",@"123321",@"#蓝色",@"#针织衫",@"#印花",@"#收腿裤",@"#豹纹",@"针织衫",@"周彦彤",@"#蓝色",@"#针织衫",@"#印花",@"#收腿裤",@"#豹纹",@"针织衫",@"周彦彤",@"JSON",@"123321",@"#蓝色",@"#针织衫",@"#印花",@"#收腿裤",@"#豹纹",@"针织衫",@"周彦彤"];

        NSString * title = @"";

        UIFont * font = [UIFont systemFontOfSize:17];

        

        CGFloat wordWidth = 0;

        CGFloat nameLabelX = 0;

        CGFloat nameLabelY = 0;

        CGFloat width = 0;

        CGFloat section = 1;

        int j = 0;

        for (int i = 0; i < titleArray.count; i++) {

        

            title = [titleArray objectAtIndex:i];

            

            CGSize size = [title sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil]];

    //这里如果需要支持ios7之前的相关使用这个方法:

    // CGSize size = [title sizeWithFont:font constrainedToSize:CGSizeMake(UTIL_View_Width(self)-30, 16) lineBreakMode:NSLineBreakByWordWrapping];

            wordWidth = size.width + wordWidth;

            nameLabelX = (i == 0 ? 10 : 10 * (i + 1)) + (i == 0 ? 0: wordWidth - size.width) ;

            

            if (nameLabelX + size.width > [UIScreen mainScreen].bounds.size.width || isExchange == YES) {

                width = size.width + width;

                nameLabelX = (j == 0 ? 10 : 10 * (j + 1)) + (j == 0 ? 0: width - size.width);

                j++;

                

                nameLabelY = 100 + size.height *section  + 10 * section;

                if(nameLabelX + size.width > [UIScreen mainScreen].bounds.size.width){

                    width = 0;

                    width = size.width + width;

                    j= 0;

                    section = section + 1;

                    

                    nameLabelX = (j == 0 ? 10 : 10 * (j + 1)) + (j == 0 ? 0: width - size.width);

                    j++;

                    

                    nameLabelY = 100 + size.height *section  + 10 * section;

                }

                isExchange = YES;

            }else if (nameLabelX + size.width <= [UIScreen mainScreen].bounds.size.width && isExchange == NO){

                nameLabelX = nameLabelX;

                nameLabelY = 100;

            }

            UILabel * nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(nameLabelX , nameLabelY, size.width, size.height)];

            nameLabel.text = title;

            nameLabel.backgroundColor = [UIColor redColor];

            NSLog(@"%f",nameLabel.frame.origin.y);

            [self.view addSubview:nameLabel];

        }

  • 相关阅读:
    计算机网络
    计算机网络
    Spring Boot自定义参数不提示、@ConfigurationProperties报错
    计算机网络概述
    面试题:类的初始化与实例的初始化
    面试题:自增变量
    最近做了一个Spring Boot小项目,大家帮忙找找bug吧, http://www.dbeetle.cn
    设计模式
    6.7 使用show profile 进行sql分析
    6.6 构建大表
  • 原文地址:https://www.cnblogs.com/zhouyantongiOSDev/p/4718025.html
Copyright © 2011-2022 走看看