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];

        }

  • 相关阅读:
    13张PPT带你了解主动式消息队列处理集群
    TomatoLog-1.1.0实现ILoggerFactory
    番茄日志发布1.0.3版本-增加Kafka支持
    博客园升级有感一点建议
    上车时机已到--.NETCore是适应时代发展的雄鹰利剑
    花5分钟时间来了解一下高性能网关Kong会有意外收获
    Asp.NETCore让FromServices回来
    高速输出-我们戏说缓存
    Consul-template+nginx实现自动负载均衡
    Consul初探-集成ocelot
  • 原文地址:https://www.cnblogs.com/zhouyantongiOSDev/p/4718025.html
Copyright © 2011-2022 走看看