您的位置:首页 > 移动开发 > IOS开发

IOS绘制文本

2015-12-02 10:19 435 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  drawRect