IOS绘制文本

1、

//
//  DrawView.h


#import <UIKit/UIKit.h>

@interface DrawView : UIView
@property(nonatomic, copy) NSString * drawStr;
@end


//
//  DrawView.m

#import "DrawView.h"

@implementation DrawView


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
    //0,0 坐标是UIView左上角的坐标
    [self.drawStr drawAtPoint:CGPointMake(0, 0) withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:[UIFont systemFontSize]]}];
    
}
@end
测试代码:

    DrawView * view1 = [[DrawView alloc] init];
    view1.frame = CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 30);
    view1.drawStr = @"测试tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt";
    view1.backgroundColor = [UIColor grayColor];
    view1.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [self.view addSubview:view1];

2、指定绘制范围,让字符串自动换行

- (void)drawRect:(CGRect)rect {
    // Drawing code    
   
    [self.drawStr drawInRect:rect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:[UIFont systemFontSize]]}];
    
}


    DrawView * view1 = [[DrawView alloc] init];
    view1.frame = CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 100);
    view1.drawStr = @"测试tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt";
    view1.backgroundColor = [UIColor grayColor];
    view1.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [self.view addSubview:view1];

默认是:单词中间不间断换行:

3、换行模式:

(1)默认:

- (void)drawRect:(CGRect)rect {
    // Drawing code    

    NSMutableParagraphStyle * paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
    
    [self.drawStr drawInRect:rect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:[UIFont systemFontSize]], NSParagraphStyleAttributeName : paragraphStyle}];
        
}
结果如上图:

(2)

    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;

(3)

    view1.drawStr = @"测试tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt,这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符这是字符";

不换行,一行能显示多少就显示多少:

    paragraphStyle.lineBreakMode = NSLineBreakByClipping;

(4)、

    paragraphStyle.lineBreakMode = NSLineBreakByTruncatingHead;

(5)剩余的不再一一说明,风格枚举如下:

// NSParagraphStyle
typedef NS_ENUM(NSInteger, NSLineBreakMode) {
    NSLineBreakByWordWrapping = 0,     	// Wrap at word boundaries, default
    NSLineBreakByCharWrapping,		// Wrap at character boundaries
    NSLineBreakByClipping,		// Simply clip
    NSLineBreakByTruncatingHead,	// Truncate at head of line: "...wxyz"
    NSLineBreakByTruncatingTail,	// Truncate at tail of line: "abcd..."
    NSLineBreakByTruncatingMiddle	// Truncate middle of line:  "ab...yz"
} NS_ENUM_AVAILABLE(10_0, 6_0);

4、横向位置:

    view1.drawStr = @"测试字符";

- (void)drawRect:(CGRect)rect {
    // Drawing code    

    NSMutableParagraphStyle * paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];

    paragraphStyle.alignment = NSTextAlignmentCenter;
    
    [self.drawStr drawInRect:rect withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:[UIFont systemFontSize]], NSParagraphStyleAttributeName : paragraphStyle}];
        
}

/* Values for NSTextAlignment */
typedef NS_ENUM(NSInteger, NSTextAlignment) {
    NSTextAlignmentLeft      = 0,    // Visually left aligned
#if TARGET_OS_IPHONE
    NSTextAlignmentCenter    = 1,    // Visually centered
    NSTextAlignmentRight     = 2,    // Visually right aligned
#else /* !TARGET_OS_IPHONE */
    NSTextAlignmentRight     = 1,    // Visually right aligned
    NSTextAlignmentCenter    = 2,    // Visually centered
#endif
    //最后一行自然对齐
    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.
    //默认对齐脚本
    NSTextAlignmentNatural   = 4,    // Indicates the default alignment for script
} NS_ENUM_AVAILABLE_IOS(6_0);







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值