2022-01-01から1ヶ月間の記事一覧

Content Hugging PriorityとContent Compression Resistance Priority

Content Hugging Priority:二つのコンテンツが並んで、十分なスペースがある場合、そのpriority高いやつはもっとタイトな形式で表示する。 例:textAのContent Hugging PriorityはtextBより大きい場合: Content Compression Resistance Priority:二つのコ…

frameとbounds

frameはsuperViewに対する位置、x, yはsuperViewによって変わる。 boundsはview自身に対する位置、x, yは常に0。 だからviewAのsubView viewBを作って、viewBはviewAを完全重合したい場合、viewB.frame = viewA.boundと書く。 因みに、viewを移動したり変形…

UIKitでStoryboardなしのアプリを作る

XcodeでUIKitのアプリを作成する。 Main.storyboardを削除する。 ProjectファイルのTarget -> General -> Deployment Info -> Main Interfaceを空欄にする。 Info.plist -> Application Scene Manifest -> Scene Configuration -> Application Session Role …

実用的なString Extension

SwiftのStringは色々な考慮上、便利なSubstring方法を提供されていない。LeetCodeをやる時Stringの問題が合うとかなり面倒くさい。下記のextensionをコピペーすれば大変助かる。 extension StringProtocol { subscript(_ offset: Int) -> Element { self[ind…

??の実行順序について

LeetCodeをやっている時バグを遭遇した。 dic[a] = dic[a] ?? 0 + 1 のようなコードを書いた時、dic[a]は常に1になってしまう。 原因は0 + 1はいつも先に実行される。 だから上記にコードは下記のように書かないといけない: dic[a] = (dic[a] ?? 0) + 1