私の次のプロジェクトでは、上から下、右から左に表示される日本語のテキストを表示する必要があります(従来の日本語の書き方)。UITextView
この方法でテキストをレイアウトするように設定することは可能ですか?以下は、このように書かれたテキストの例です。
W H O E R L L L D O ! ,
また、私はそれを選択できる必要があります(そうUILabel
です)。これは完全にカスタムビューになりますか?
私の次のプロジェクトでは、上から下、右から左に表示される日本語のテキストを表示する必要があります(従来の日本語の書き方)。UITextView
この方法でテキストをレイアウトするように設定することは可能ですか?以下は、このように書かれたテキストの例です。
W H O E R L L L D O ! ,
また、私はそれを選択できる必要があります(そうUILabel
です)。これは完全にカスタムビューになりますか?
結局のところ、答えは「できません」です。
そこで、「 SimpleTextInput 」に大きく基づいたCoreTextを使用して独自のテキストを作成しました。このビューの鍵はYES
、鍵に追加することkCTVerticalFormsAttributeName
です。幸いなことに、選択ロジックはプロジェクトにすでに存在し、使用されていないだけです。パンジェスチャ内で適切なメソッドを呼び出すことで簡単に追加できました(CTFrameGetLineOrigins
隣接するメモリの一部を上書きするサルのビジネスがありましたが、幸運にもそれを解決できました)。
今のところ、あなたが望むようなスタイルのカスタムビューはないようです。もし私があなたなら、日本語のテキストの植字を伝統的な日本語の書き方に合わせるように変換します(おそらく、それは良い考えではありませんが、可能です)
テキスト文字列は「YUQMIEAZVRNJFBWSOKGCXTPLHD」である可能性があります。
ところで、あなたは算術符号化が得意ですか?
あなたはこれを試すことができます-
- (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];
}
右から左へ
uiTextView.text = [NSString stringWithFormat:@"\u202B%@",textString];
テキストだけを移動したい場合は、試してみてください
[textViewTest setContentInset:UIEdgeInsetsMake(<#CGFloat top#>、<#CGFloat left#>、<#CGFloat bottom#>、<#CGFloat right#>)];
正の数はフレームを中央に向かって移動し、負の数はフレームを中央から移動します。
たとえば、[textViewTest setContentInset:UIEdgeInsetsMake(-5、0、5,0)]は、テキストを5ピクセル上に移動します。