UITextView 可以从上到下呈现吗?
Posted
技术标签:
【中文标题】UITextView 可以从上到下呈现吗?【英文标题】:Can a UITextView render top to bottom? 【发布时间】:2012-09-12 03:29:13 【问题描述】:我的下一个项目需要显示从上到下和从右到左的日文文本(传统的日文写作风格)。是否可以通过这种方式设置UITextView
来布局文本?下面是一些以这种方式编写的文本的示例:
W H O E R L L L D O ! ,
另外,我需要能够选择它(所以UILabel
不在了)。这会变成一个完全自定义的视图吗?
【问题讨论】:
有帮助吗? ***.com/questions/4905500/… @bryanmac 查看我对下面答案的评论 我很惊讶似乎没有任何关于此的现有信息,即使对于 OS X 也是如此。可以选择带有适当 CSS 的UIWebView
吗?搜索 uiwebview tategaki 具有暗示性,甚至会在 SO 上找到一些信息。
@JoshCaswell 最终可能就是这样……但我真的很鄙视使用 UIWebView,因为那时我的所有交互都必须使用 javascript(需要突出显示系统、备忘录等)。目前正在研究基于 PDF 的解决方案。
【参考方案1】:
事实证明,答案是“不,它不能。”
所以,我使用核心文本构建了自己的核心文本,它在很大程度上基于“SimpleTextInput”。此视图的关键是将YES
添加到kCTVerticalFormsAttributeName
键。幸运的是,选择逻辑已经存在于项目中,只是没有被使用。我可以通过在平移手势中调用适当的方法轻松地添加它(有一些猴子业务 CTFrameGetLineOrigins
覆盖了它的一些相邻内存,但幸运的是我能够解决它)。
【讨论】:
【参考方案2】:到目前为止,似乎还没有你想要的那种风格的自定义视图。 如果我是你,我会把日文的排版转换成传统的日文写作风格。(也许这不是一个好主意,但有可能)
可能文本字符串是“Y U Q M I E A Z V R N J F B W S O K G C X T P L H D”。
顺便说一句,你擅长算术编码吗?
【讨论】:
我需要能够选择视图中的文本,以便用户可以在字典中搜索某个突出显示的单词。除非选择跟随文本,否则这是不可能的。 这真是个问题。正如你所说,可能会创建 PDF 文件【参考方案3】:从右到左
uiTextView.text = [NSString stringWithFormat:@"\u202B%@",textString];
【讨论】:
可能我不是很清楚,但是文字是从上到下,换行是从右到左。 这根本不能回答问题。这只是应用 Unicode RTL 标记。字符应该从上到下移动。 我看到了original version of the question。它解释说,文本需要从上到下排列,然后从左到右排列。 borrrden 唯一改变的是示例。问题是一样的。你的回答没有解决。【参考方案4】:你可以试试这个——
- (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];
【讨论】:
如何从上到下和从右到左渲染文本?【参考方案5】:如果你只想移动文字,试试
[textViewTest setContentInset:UIEdgeInsetsMake(, , , )];
正数将框架移向中间,负数将框架从中间移出。
例如,[textViewTest setContentInset:UIEdgeInsetsMake(-5, 0, 5,0)],会将文本向上移动 5 个像素!
【讨论】:
我不只是想移动文本...我希望文本的布局与正常情况完全不同。查看问题中的图表,单词从右上角开始,然后向下移动,下一行从第一行的左上角重新开始,依此类推。以上是关于UITextView 可以从上到下呈现吗?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7导航栏barTintColor - 能够让它从上到下淡化吗?