据我所知Apple的TextKit不支持NSTypesetter(可以从上到下设置写入方向),但我的语言(传统蒙古语)应该从上到下书写。所以我想用子类来自定义UITextView,然后做了一个简单的演示(将UITextView旋转为M_PI / 2)。
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width)];
if (self) {
CGAffineTransform transform = CGAffineTransformRotate(self.transform, M_PI/2);
CGFloat translate = (frame.size.height - frame.size.width) / 2;
transform = CGAffineTransformTranslate(transform, translate, translate);
transform = CGAffineTransformScale(transform, 1, -1);
self.transform = transform;
}
return self;
}
创建一个宽度= 100&的TextView。高度= 200:
ZGTextView *textView = [[ZGTextView alloc] initWithFrame:CGRectMake(110, 20, 100, 200)];
textView.text = @"012345678901234567890123456789012345678901234567890123456789";
[self.view addSubview:textView];
但是当运行demo时,我发现文本容器只使用了TextView的上半部分,即使我使用initWithSize方法初始化TextContainer。 我想这是因为NSLayoutManager自动设置适合TextView宽度的线长(在我的测试宽度= 100,高度= 200),但在我的ZGTextView中它应该适合TextView的高度(垂直线)。
有没有办法自定义NSLayoutManager,它可以支持适合UITextView高度的绘制线?