Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > CoreTextでTextViewの一文字の向きを変える

CoreTextでTextViewの一文字の向きを変える(解決前)

TextViewの文字を縦書きにしたいなぁと考えている時にCoreTextとNSMutableAttributedStringの二つのどちらかなら実装できそう。CoreTextを利用してトライして無理ならAttributedStringをトライしてみます。

サンプル画像

参考:is it possible to rotate the character using NSAttributedString
参考:How to manipulate individual character of UITextView in ios?
参考:CoreTextを調べてみた
参考:Core Text
参考:Change font of individual words in UITextView in Interface Builder
参考:NSAffineTransformのメモ

やってみた

やれませんでした、、、、


- (void)drawRect:(NSRect)rect
{
    NSAttributedString * myString = [[NSAttributedString alloc] initWithPath:mypath documentAttributes:NULL];
    NSAffineTransform* xform = [NSAffineTransform transform];
    [myString drawAtPoint:NSMakePoint(10,10)];
    [xform rotateByDegrees:-90.0];
    [xform concat];
    [myString drawAtPoint:NSMakePoint(-150,0)];
    [xform invert];
    [xform concat];
    [myString drawAtPoint:NSMakePoint(15,15)];
    [myString release];
}

UITextViewを継承したdrawRectの上のコードをSwiftに書き換えたかったのですがNSAffineTransformの宣言でエラー。 あれ、、、use of undefined type 'NSAffineTransform'。DocumentもあるのでSwiftだけできないわけではないはずなので、 調査。。。


import UIKit
import Foundation

public class myTextView: UITextView {
    
    required public init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer);
    }
    
    public override func drawRect(rect: CGRect) {
        var transform :NSAffineTransform;
    }
}

サンプル画像

参考:Maxxxro/Maxxxro/DemoView.swift
参考:Foundation Framework Reference NSAffineTransform Class Reference

URL先をみていると、import foundationすれば使える感じなんだけど、、、

まとめ

現状できていないので、継続して進めてまいります!

次の記事はこちらです!(まだ正しい解決ではないですが、、、)

↓こんな記事もありますよ!

デバッグ時とリリース時に処理を変更する#ifdef DEBUG のやり方

DEBUG時だけ特定の動作をさせて、リリース時に排除したい、そんな時に利用する方法です。Swiftでは標準ではDEBUGとリリースの判断がつかないので、 コンパイル時に設定する必要があります

NSNotificationCenterでコード間のイベントやりとり

AppDelegateのイベント(アプリがアクティブ)になるタイミングでViewControllerに通知する為にはどうすればいいのか?と 調査しているとこのクラスにたどり着きました。delegateを利用せずにイベントの通知をViewController間で簡単に実装できるので 使いやすいです!

UINavigationController

TabBarとUITableViewControllerを利用して一つのUIViewControllerだけをクリックすると右にスライドするUINavigationControlerを 利用したサンプルを記載します。というのも、AppDelegate内でUINavigationをself.windowのrootviewcontrollerにセットする 方法は多々あったのですが、AppDelegate内を利用しないでNavigationを実装する方法がなくハマっていましたのでを以下記載します
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!