投稿

9月, 2017の投稿を表示しています

Xcodeのフォント/色の設定の変更が効かない

イメージ
Xcodeにはフォント/色を変える機能があります。 ところが、最近これがうまく効かなくなってしまいました。Xcodeのバージョンは9.0です。 いらないものを消しても、次にXcodeを起動した時に復活してきます。 自分が取った対策は以下です。 今までに自分で作った設定をどこかにメモして ~/Library/Developer/Xcode/UserData/FontAndColorThemes の中を全て削除して初期状態にし、その後Xcode上で必要なものを作り直す。 ~は/Usersの下の自分フォルダです。煙突が付いた家のアイコンのやつです。 ~/Libraryは普通は見えないのでForkLiftというソフトを使いました。あるいは、optを押しながらFinderのGoをクリックすると出てきます。 画像ではoptを押してないです。optを押すとスクリーンショットが取れなかったので。 参考 https://qiita.com/Humangas/items/420ae56cc6db2d3d998d

Auto Layoutで発生する黄色の警告

イメージ
Auto Layoutで発生する黄色の警告は、自動修正機能がある。この自動修正機能は、エラーのあるソースコードに対するFixボタンのようなもの。以下は、この自動修正を行ったレポートである。なぜその警告が出るかはわからないのでひとまず置いといて、自動修正を行ったときの挙動を報告するものである。使用したXcodeのバージョンは9.0。 LeadingとTrailingに対するConstraint警告 Xcode9で既存のプロジェクトを開くとこんな警告が出ました。 Fixed leading and trailing constraints may cause clipping, one of them should have a constant ≥ standard space. 選択肢1 : Use Fixed Leading and Resizing Trailing Constraints Adjust to include a fixed leading constraint and a trailing constraint with a constant ≥ standard space. Recommended if the view is on the left half of the parent view. 選択肢2 : Use Resizing Leading and Fixed Trailing Constraints Adjust to include a leading constraint with a constant ≥ standard space and a fixed trailing constraint. Recommended if the view is on the right half of the parent view. 文を読んでも何を言っているかわからないので、簡単なプロジェクトを作ってテストしました。メインのviewの上にラベルを一つ置くものです。ラベルと親viewとの間にleadingとtrailingの制約を付けました(他の制約を述べるのは割愛)。この警告はleadingとtrailingのどちらかを26以上にすると発生しました。どちらかを26以上にしただけで両方の選択肢が出てきます。

iOS8対策、アプリ内のhtmlファイルをWKWebViewで表示

アプリの中にhtmlファイルを持ち、それをWKWebViewで表示する方法です。iOS8向けです。iOS8のWKWebViewではhtmlファイルがロード可能なところにファイルがないと読み込めないので、その場所にコピーする手間が生じます。iOS9ではその必要はありません。ここで想定している規模は、ベースとなるhtmlの他に画像ファイルが何点かある場合です。向いているのは、文章と画像が中心のもので、ブラウザにレイアウトを任せたいものです。例えばアプリの使い方の説明などがあるでしょう。 関連するファイルのかたまりを管理するstruct これは、ひとつのページに関連するファイルをまとめて扱うためのstructです。この記事はひとつのページに画像が数点あるようなものを想定しています。 struct FileList { let baseHTML: String let includedFiles: [String] } baseHTMLは拡張子が.htmlのファイルです。 includedFilesはそこに含まれる画像ファイルなどの配列です。拡張子も含めます。 ViewController WKWebViewインスタンスを作成し、viewにWKWebViewインスタンスを貼り付けます。 上で定義したFileListのインスタンスを作り、load(fileList: , tempName: )を呼びます。 load(fileList: , tempName: )は後で説明します。 class ViewController: UIViewController { let webView = WKWebView() override func viewDidLoad() { super.viewDidLoad() webView.frame = self.view.frame self.view.addSubview(webView) let fileList = FileList( baseHTML: "test.html", includedFiles: ["Image.png&