iOS-文字竖排

作者: 芮淼一线 | 来源:发表于2020-07-04 21:48 被阅读0次

方案一:

思路:字符串直接单字换行
缺点:只能显示一列文字

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UILabel (Extension)
@property (nonatomic) NSString *verticalText;

@end

NS_ASSUME_NONNULL_END

#import "UILabel+Extension.h"
#import "objc/Runtime.h"


@implementation UILabel (Extension)
- (NSString *)verticalText{
    // 利用runtime添加属性
    return objc_getAssociatedObject(self, @selector(verticalText));
}

- (void)setVerticalText:(NSString *)verticalText{
    objc_setAssociatedObject(self, &verticalText, 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;
}
@end

方案二:

三方库:YYText

- (void)verticalText
{
    YYLabel *lab = [[YYLabel alloc] init];
    lab.frame = CGRectMake(100, 420, 200, 200);
    lab.backgroundColor = UIColor.grayColor;
    lab.textColor = UIColor.redColor;
    lab.numberOfLines = 0;
    lab.verticalForm = YES;
    lab.textVerticalAlignment = YYTextVerticalAlignmentTop;
//    lab.textContainerPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 200, 200)];
    lab.exclusionPaths    = @[[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 0, 0)]];
//    lab.textContainerInset = UIEdgeInsetsMake(20, 40, 40, 140);
    lab.text = @"1.第一列文字\n 2.第二列文字";
    [self.view addSubview:lab];
}

三方库:CoreTextView
这个功能没有YYText强大,不过这个框架是专门为了实现文字的竖向排列的

- (void)verticalCoreTextView
{
    CoreTextView *lab = [[CoreTextView alloc] init];
    lab.frame = CGRectMake(100, 420, 200, 200);
    lab.backgroundColor = UIColor.grayColor;
    lab.textColor = UIColor.redColor;
    lab.font = [UIFont systemFontOfSize:18];
    lab.numberOfLines = 0;
    lab.lineSpace = 2;
    lab.wordSpace = 2;
    lab.baseLine = CoreTextBaseLineRight|CoreTextBaseLineTop;
    lab.text = @"1.第一列文字\n 2.第二列文字";
    [self.view addSubview:lab];
}

相关文章

  • iOS-文字竖排

    方案一: 思路:字符串直接单字换行缺点:只能显示一列文字 方案二: 三方库:YYText 三方库:CoreText...

  • 竖排显示文字

  • 3个Excel小技巧,你都会吗?

    1、横排文字转为竖排文字 方法一: 选中单元格,单击【开始】,在对齐方式功能区单击“方向”,选择“竖排文字”即可。...

  • CorelDRAW如何设置竖排文字

    很多同学反映,在CorelDRAW中找不到竖排文本工具在哪,或者在设置竖排文本的时候,遇到数字和字母,竖排文字就会...

  • 竖排文字的学问

    中国古代书籍上千年来都是从右到左,竖排排版。难道古人不知道横排可以节约纸张,且容易阅读么?我们的祖先当然知道这其中...

  • [Android]实现文字竖排

    最终效果:文字竖排,英文字母是横着的,中文字是竖的,如下图 分析:英文是一个完整的单词旋转了90度,中文一字一行 ...

  • iOS - Label文字竖排

    前言: 有的需求会给出文字竖排的方式,下面给出两种思路来实现这种效果.一是为UILabel添加分类,添加一个文字竖...

  • Android - 实现竖排文字

    1. 自定义View 描绘出效果 VerticalText.java 2. UI 布局中定义 activity_m...

  • 竖排文字垂直居中

    先上 dom: 思路 使用嵌套结构,先让文字左右居中,再让文字上下居中; 两种方法左右居中,一种为父元素text-...

  • 竖排文字垂直居中问题

    css样式 html页面结构 详细解释:写页面需要文字竖排垂直居中效果,我脑袋里首先想到的是writing-mod...

网友评论

    本文标题:iOS-文字竖排

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