ios开发系列之NSRange

//NSRange的定义可以理解为从location开始的length个元素
typedef struct _NSRange {
    NSUInteger location; //表示对象开始的下标
    NSUInteger length; //表示对象长度
} NSRange;
//创建NSRange的方法定义:
NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
    NSRange r;
    r.location = loc;
    r.length = len;
    return r; //返回一个NSRange类的对象
}
//返回location和length的和,也就是该range 下对象的最大一个下标加1(或者理解为在所取数据中的第max个元素,这里索引为0的为第一个元素)
NSUInteger NSMaxRange(NSRange range) {
    return (range.location + range.length);
}
//判断所给的下标是否在range内
BOOL NSLocationInRange(NSUInteger loc, NSRange range) {
    return (!(loc < range.location) && (loc - range.location) < range.length) ? YES : NO;
}
//判断两个range是否相等
BOOL NSEqualRanges(NSRange range1, NSRange range2) {
    return (range1.location == range2.location && range1.length == range2.length);
}
//将2个range组合一起返回一个范围最大的NSRange对象(或者理解为 取原来2个range能取到下标最小的元素,直到原来2个range能取到下标最大的元素)
NSRange NSUnionRange(NSRange range1, NSRange range2);
//将一个range ( , )转换为字符串{ , }形式
NSString *NSStringFromRange(NSRange range);
//将一个字符串转成range,这个方法会扫描字符串,找到最前面的两个数,如果只有一个数字就将这个数字作为location.没有的话 location和length都为0.
NSRange NSRangeFromString(NSString *aString);

测试代码:

    NSArray * array = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];
    NSRange range = NSMakeRange(3, 3);
    NSArray * newArray = [array subarrayWithRange:range];
    NSLog(@"newArray ---%@",newArray); //newArray ---(3, 4, 5)
    int x = NSMaxRange(range);
    NSLog(@"x==%d",x);//x==6
    BOOL is = NSLocationInRange(6, range);
    NSLog(@"is====%d",is);//is====0
    NSRange range2 = NSMakeRange(4,3);
    NSRange rangeNew = NSUnionRange(range, range2);
    NSArray * newArray1 = [array subarrayWithRange:rangeNew];
    NSLog(@"newArray1111111_____%@",newArray1); //newArray1111111_____(3,4,5,6)
    NSString * str1 = NSStringFromRange(range);
    NSLog(@"str1====%@",str1);//str1===={3, 3}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS开发中,实现中文作文方框样式布局可以通过以下步骤实现: 1. 创建一个UIView作为方框容器,设置其背景色和边框样式。 2. 创建UILabel作为方框中的文本容器,设置其行数、字体、颜色等属性,然后将其添加到方框容器中。 3. 根据中文作文的排版要求,使用NSAttributedString来设置UILabel中的文本,包括字号、行间距、字间距等。 4. 根据文本内容计算UILabel的高度,并根据高度调整方框容器的高度。 示例代码: ```swift // 创建方框容器 let containerView = UIView(frame: CGRect(x: 20, y: 100, width: 300, height: 300)) containerView.backgroundColor = UIColor.white containerView.layer.borderWidth = 1 containerView.layer.borderColor = UIColor.black.cgColor self.view.addSubview(containerView) // 创建文本容器 let label = UILabel(frame: CGRect(x: 10, y: 10, width: 280, height: 20)) label.numberOfLines = 0 label.font = UIFont.systemFont(ofSize: 16) label.textColor = UIColor.black containerView.addSubview(label) // 设置文本内容 let text = "这是一篇中文作文,要求使用方框样式进行排版。" let attributedString = NSMutableAttributedString(string: text) let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = 8 paragraphStyle.alignment = .justified let range = NSRange(location: 0, length: text.count) attributedString.addAttribute(.font, value: UIFont.systemFont(ofSize: 16), range: range) attributedString.addAttribute(.paragraphStyle, value: paragraphStyle, range: range) label.attributedText = attributedString // 计算文本高度并调整方框容器高度 let size = label.sizeThatFits(CGSize(width: 280, height: CGFloat.greatestFiniteMagnitude)) label.frame.size.height = size.height containerView.frame.size.height = size.height + 20 ``` 在这个示例中,我们创建了一个300x300的方框容器,并在其中添加了一个UILabel作为文本容器。我们使用NSAttributedString来设置UILabel中的文本,包括字号、行间距和字间距等。最后,我们计算文本高度并调整方框容器高度,使得文本能够完整地显示在方框中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值