投稿

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はそこに含まれる画像ファイルなどの配列です。拡張子も含めます。

ViewControllerWKWebViewインスタンスを作成し、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"] …