xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能家电

当前位置:美高梅游戏网站 > 智能家电 > 自定义圆环百分占比view (label文字支持自动换行

自定义圆环百分占比view (label文字支持自动换行

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-10 13:43

图片 11.png图片 22.png图片 33.png

  • (void)setTextTop
    {
    NSMutableString *resultStr = [self.text mutableCopy];
    NSArray *array = [resultStr componentsSeparatedByString:@"n"];
    NSInteger temp = 0;
    NSInteger lines = self.lineBreakMode;
    for (int j = 0; j < array.count; j++) {
    NSString *str = array[j];

      if ([str isEqual:@""]) {
          temp --;
      }
      if (str.length > self.width - 40) {
          temp++;
      }
    

    }

    for (int i = 0; i < (lines - array.count - temp + 1); i++) {
    [resultStr appendString:@"n"];
    }
    self.text = resultStr;
    }

从图可以看出我们需要标志类型的label 数量value 所占的角度angle 还有代表的颜色,得出数据结构如下

以下两个没试过:

public static class Entry implements Comparable { public String label; public int value; public float angle; public int color; public Entry(String label, int value) { this.label = label; this.value = value; } @Override public int compareTo(@NonNull Object o) { Entry e =  o; if (value > e.value) return -1; if (value < e.value) return 1; return 0; } }
  • (void)alignTop {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width; //expected width of label
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
    int newLinesToPad = (finalHeight - theStringSize.height) / fontSize.height;
    for(int i=0; i<newLinesToPad; i++)
    self.text = [self.text stringByAppendingString:@"n "];
    }

  • (void)alignBottom {
    CGSize fontSize = [self.text sizeWithFont:self.font];
    double finalHeight = fontSize.height * self.numberOfLines;
    double finalWidth = self.frame.size.width; //expected width of label
    CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
    int newLinesToPad = (finalHeight - theStringSize.height) / fontSize.height;
    for(int i=0; i<newLinesToPad; i++)
    self.text = [NSString stringWithFormat:@" n%@",self.text];
    }

按照数据总数平分一个圆,但是可能存在不能整分的情况,还有可能分的角度太小都看不到。

本文由美高梅游戏网站发布于智能家电,转载请注明出处:自定义圆环百分占比view (label文字支持自动换行

关键词: