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);