IOS开发入门之iOS 学习 - 23.加载本地 txt 文件, NSMutableParagraphStyle 段落格式,缩放动画,字体间距
凌雪 2018-09-17 来源 :网络 阅读 554 评论 0

摘要:本文将带你了解IOS开发入门之iOS 学习 - 23.加载本地 txt 文件, NSMutableParagraphStyle 段落格式,缩放动画,字体间距,希望本文对大家学Ios有所帮助。

本文将带你了解IOS开发入门之iOS 学习 - 23.加载本地 txt 文件, NSMutableParagraphStyle 段落格式,缩放动画,字体间距,希望本文对大家学Ios有所帮助。


思路:
  1.new 一个 Empty 后缀为   .txt 文件,内容随笔拷贝一段
  2.用 NSString 接收本地文件,再用一个标题拼接字符串
  3.创建一个 NSMutableParagraphStyle 实例,设置标题居中、标题距离正文间隔
  4.创建一个 NSMutableParagraphStyle 实例,设置正文左对齐、每段开头缩进 10
  5.创建一个基础动画的实例,用代理监听动画结束
    话不多说上代码
   
    #pragma mark -- 拼接字符
- (void)loadData:(NSString *)filename {
   
    //第一个段落
      NSMutableParagraphStyle *first = [[NSMutableParagraphStyle   alloc]init];
    first.alignment =   NSTextAlignmentCenter;
    first.lineSpacing = 10;
   
    //第二个段落
      NSMutableParagraphStyle *second = [[NSMutableParagraphStyle   alloc]init];
    //从左开始写
      second.alignment = NSTextAlignmentLeft;
    //首行缩进
      second.firstLineHeadIndent = 10;
    //间距
      second.lineSpacing = 10;
   
    UIFont *titleFont = [UIFont   systemFontOfSize:16];
    UIFont *contextFont = [UIFont   systemFontOfSize:13];
   
    NSMutableAttributedString *str1 =   [[NSMutableAttributedString alloc]initWithString:@"游戏许可及服务协议"   attributes:@{NSParagraphStyleAttributeName:first,NSFontAttributeName:titleFont}];
   
    //标题拼接正文,正文前加换行符
      NSString *str = [NSString   stringWithFormat:@"\n%@",filename];
   
    NSMutableAttributedString *str2 =   [[NSMutableAttributedString alloc]initWithString:str   attributes:@{NSParagraphStyleAttributeName:second,NSFontAttributeName:contextFont}];
   
    [str1 appendAttributedString:str2];
    _textView.attributedText =   str1;
    }
   
    #pragma mark -- 关闭动画
- (void)closeAniamtion:(UIView *)view {
    CABasicAnimation *animation =   [CABasicAnimation animation];
    animation.keyPath =   @"transform.scale";
    animation.toValue = @0.9;
    animation.duration = 0.4;
    animation.delegate = self;
    animation.removedOnCompletion =   NO;
    animation.fillMode =   kCAFillModeForwards;
    [view.layer   addAnimation:animation forKey:@"closeAnimation"];
    }
   
    #pragma mark -- 本地   txt 文件内容
- (NSString *)filename {
    //本地 txt 文件
      NSString *path = [[NSBundle mainBundle]pathForResource:@"浅遇时光,静好无恙.txt"   ofType:nil];
    //取出内容
      NSString *filename = [[NSString alloc]initWithContentsOfFile:path   encoding:NSUTF8StringEncoding error:nil];
    return filename;
    }
   
   
    #pragma mark -- 代理监听动画停止
- (void)animationDidStop:(CAAnimation *)anim   finished:(BOOL)flag {
   
        if ([_bgView.layer   animationForKey:@"closeAnimation"] == anim) {
        [_bgView   removeFromSuperview];
    }
    }
   
     
    字体间距,中文的文字宽度是相等的,英文和数字的宽度不一样
   
    - (void)baseChinese:(UILabel *)label   loadFirst:(NSString *)firstStr second:(NSString *)secondStr
    {
        //第一个段落
      NSMutableParagraphStyle *first = [[NSMutableParagraphStyle   alloc]init];
    //第二个段落
      NSMutableParagraphStyle *second = [[NSMutableParagraphStyle   alloc]init];
   
    int a =   (int)firstStr.length;
    int b =   (int)secondStr.length;
   
    if (a>b) {
   
            NSDictionary *dict1 =   @{NSParagraphStyleAttributeName:first};
        NSMutableAttributedString   *firstAttr = [[NSMutableAttributedString alloc]initWithString:firstStr   attributes:dict1];
        /** 计算间距 **/
        CGFloat lineGap =   label.font.pointSize *(a-b)/(b-1);
       
        NSString *longSecondStr =   [NSString stringWithFormat:@"\n%@",secondStr];
        NSMutableAttributedString   *secondAttr = [[NSMutableAttributedString alloc]initWithString:longSecondStr   attributes:@{NSParagraphStyleAttributeName:second}];
        NSRange range = {0,b};
        /** 添加间距属性 **/
        [secondAttr   addAttribute:NSKernAttributeName value:[NSNumber numberWithFloat:lineGap]   range:range];
        /** 拼接字符串 **/
        [firstAttr   appendAttributedString:secondAttr];
        label.attributedText =   firstAttr;
       
    }else if(b>a){
       
        NSRange range = {0,a};
        /** 计算间距 **/
        CGFloat lineGap =   label.font.pointSize *(b-a)/(a-1);
        NSDictionary *dict1 =   @{NSParagraphStyleAttributeName:first};
        NSMutableAttributedString   *firstAttr = [[NSMutableAttributedString alloc]initWithString:firstStr   attributes:dict1];
        /** 添加间距属性 **/
        [firstAttr   addAttribute:NSKernAttributeName value:[NSNumber numberWithFloat:lineGap]   range:range];
       
        NSString *longSecondStr =   [NSString stringWithFormat:@"\n%@",secondStr];
        NSMutableAttributedString   *secondAttr = [[NSMutableAttributedString alloc]initWithString:longSecondStr   attributes:@{NSParagraphStyleAttributeName:second}];
        /** 拼接字符串 **/
        [firstAttr   appendAttributedString:secondAttr];
        label.attributedText =   firstAttr;
       
    }else{
        /** 如果相等,直接拼接   **/
        label.text = [NSString   stringWithFormat:@"%@\n%@",firstStr,secondStr];
    }
    }
   
   
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程