7

我的下一个项目需要显示从上到下和从右到左的日文文本(传统的日文写作风格)。是否可以通过UITextView这种方式设置布局文本?下面是一些以这种方式编写的文本的示例:

 W H
 O E
 R L
 L L
 D O
 ! ,

另外,我需要能够选择它(所以UILabel出来了)。这会变成一个完全自定义的视图吗?

4

5 回答 5

2

事实证明,答案是“不,它不能”。

因此,我使用核心文本构建了自己的核心文本,它在很大程度上基于“ SimpleTextInput ”。这个视图的关键是添加YESkCTVerticalFormsAttributeName关键。幸运的是,选择逻辑已经存在于项目中,只是没有被使用。我很容易通过在平移手势中调用适当的方法来添加它(有一些猴子业务CTFrameGetLineOrigins覆盖了它的一些相邻内存,但幸运的是我能够解决它)。

于 2012-09-24T05:35:02.050 回答
0

到目前为止,似乎还没有你想要的这种风格的自定义视图。如果我是你,我会将日文的排版转换为适应传统的日文写作风格。(也许,这不是一个好主意,但这是可能的)

也许文本字符串是“YUQMIEAZVRNJFBWSOKGCX TPLH D”。

顺便说一句,你擅长算术编码吗?

于 2012-09-12T08:17:41.557 回答
-1

如果您只想移动文本,请尝试

[textViewTest setContentInset:UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)];

正数将框架移向中间,负数将框架从中间移出。

例如,[textViewTest setContentInset:UIEdgeInsetsMake(-5, 0, 5,0)],会将文本向上移动 5 个像素!

于 2012-09-12T11:14:09.560 回答
-1

右向左

 uiTextView.text = [NSString stringWithFormat:@"\u202B%@",textString];
于 2012-09-12T04:55:08.100 回答
-1

你可以试试这个——

- (void)loadView {
[super loadView];

CGRect frame = CGRectZero;
frame.size = self.view.frame.size;

UITextView* tv = [[UITextView alloc] initWithFrame:frame];
[self.view addSubview:tv];

tv.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

tv.text = [_value description];

tv.editable = NO;
tv.dataDetectorTypes = UIDataDetectorTypeAll;

// default font size is too small
tv.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];

[tv release];
}
于 2012-09-12T05:54:01.100 回答