将获得的字符串竖排显示

作者: 静花寒 | 来源:发表于2016-07-06 15:22 被阅读354次
    9D892593-27D4-4DE6-888A-FF38548C4A9B.png

    有些可恶的ui常常会搞上图这些竖着显示的label或者button,安卓端貌似实现比较简单,但iOS端显示却比较麻烦,因为官方的富文本ipa是不支持竖列显示的。

      查了下网上的黑科技,普遍比较认同的方法是控制字号,让一行只能容下一个字符..
    

    今天我就分享给大家一个代码实现的文本竖排实现的方法

      思路非常简单,将获得的字符串,每个字符后加\n
    

    代码丢起来

    方案1:NSString分类
    
    
    @interface NSString (VerticalString)
    
    /**
     *  将拿到的string变为竖着排列显示
     */
    - (NSString *)VerticalString;
    
    @end
    
    #import "NSString+VerticalString.h"
    
    @implementation NSString (VerticalString)
    
    - (NSString *)VerticalString{
        NSMutableString * str = [[NSMutableString alloc] initWithString:self];
        NSInteger count = str.length;
        for (int i = 1; i < count; i ++) {
            [str insertString:@"\n" atIndex:i*2 - 1];
        }
        return str;
    }
    
    @end
    
    方案2:UILabel分类
    
    @property (nonatomic) NSString *verticalText;
    
    - (NSString *)verticalText{
        return objc_getAssociatedObject(self, &verticalTextKey);
    }
    
    - (void)setVerticalText:(NSString *)verticalText{
        objc_setAssociatedObject(self, &verticalTextKey, verticalText, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
        NSMutableString *str = [[NSMutableString alloc] initWithString:verticalText];
        NSInteger count = str.length;
        for (int i = 1; i < count; i ++) {
            [str insertString:@"\n" atIndex:i*2-1];
        }
        self.text = str;
        self.numberOfLines = 0;
    }
    

    代码比较简单,调用就更简单了,一行代码结束😊

    此处只调用label分类(NSString分类必须要加numberOfLines),另一种大家自行把玩😄
    NSString *string = @"我的啊得大打达答啊打完网球aaaaaaaaa";
    UILabel *label = [[UILabel alloc] initWithFrame:(CGRectMake(100, 0, 300, 600))];
    label.verticalText = string;
    [label sizeToFit];//顶部显示
    [self.view addSubview:label];
    

    显示效果:


    F22C74C0-A12F-443E-8D26-21DCCB687012.png

    😄😄😄 跑路!

    相关文章

      网友评论

        本文标题:将获得的字符串竖排显示

        本文链接:https://www.haomeiwen.com/subject/csykjttx.html