iOS

既存のiOSアプリをUIScene対応するやり方

(0)前提 既存アプリA…iOS12以前で UIApplicationDelegate のライフサイクルで動くやつ UIはStoryboardベース 参考アプリB…iOS13以降で UIWindowSceneDelegate のライフサイクルで動くやつ Xcode11でHello World的なやつを新規作成すればよい 必要なら Suppor…

Core Text で縦書き(3)

前回 Core Text で縦書き(2) - 錯綜 のコメント欄で90度回転しなくていいやつを教えてもらえた。 こんな誰も読んでないようなブログでも親切な人が教えてくれたりするものである。 ありがたいことである。 というわけでやってみた。 まず普通に CTFrame を使…

Swiftでファミコンエミュレータを書いた(3)

githubに上げた。 github.com わかっている問題 音は出ない 遅い iOS実機で動作確認してない 対応している mapper は NROM だけ 遅い問題 Debug build だと 7 fpsくらいしか出ない。 (MacBook 2017, iOS Simulator) Release build だと 40 fps くらい出るの…

Swift製NESエミュレータその2

遅々として進まず。 nestest はまだたくさん失敗している。 「テスト失敗」の結果を得るまでが大変だった。 実装のミスではなく、仕様を読み違えている。 6502 の CMP のキャリーフラグの仕様変だよね。 思い込みはバグのもと。 color_test はちょっと動いて…

Swiftでファミコンのエミュレータを書いてみる

先週読んだこのブログエントリ Kotlinでファミコンのエミュレータを書いた - ゆいきノート に刺激を受けたので自分でも書いてみることにした。 Swift4.2, iOS12.0, Xcode10.0で。 なるべく他人の書いたソースコードは読まないようにして、 できるだけ文書や…

Core Graphics で半透明図形を描く

図形を塗りつぶす。 UIColor.red.setFill() UIBezierPath(rect: CGRect(x: 80, y: 80, width: 100, height: 100)).fill() 重ねて描く。 UIColor.blue.setFill() UIBezierPath(rect: CGRect(x: 100, y: 100, width: 100, height: 100)).fill() ここから半透明…

Core Text で縦書き(2)

NSAttributedString.draw(in:) なら Core Text 無しで縦書きできんじゃね? と思って試してみたけどそんな単純じゃなかった。 役物だけ回転しているので近づこうとしている気配はあるけど、 なにか指定方法があるのかどうなのか、ちょっとわからなかった。 さ…

Core Text で縦書き

Core Text でテキストを描画するには CTFrameDraw(_:_:) を呼べばいいのだけど、そのパラメータをどうつくるかという話。 FrameDraw 第2引数の CGContext は UIGraphicsGetCurrentContext() で得られる。 FrameDraw 第1引数の CTFrame は CTFramesetterCreat…

NSString の UIKit 拡張で文字列を描くやり方

iOS の UIView 派生クラスで func draw(_:) を override して UIBezierPath やら UIImage やらを描画する横並びで、 文字列も描画するやつの話。 import UIKit すると NSString.draw(at:withAttributes:) や NSString.draw(in:withAttributes:) が使える。 N…