20200529のiOSに関する記事は3件です。

XcodeGenを使ってUI Testing Bundle (UIテスト用ターゲット) を追加する

Product Typeに bundle.ui-testing を指定するとUIテスト用ターゲットを追加できます。
https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md#product-type

project.ymlでUIテスト用ターゲットの定義と、メインのターゲットでのtestTargetの定義をすれば追加できます。

project.yml
targets:
  ExampleApp:
    type: application
    ...
    scheme:
        testTargets:
            - ExampleAppUITests
  ExampleAppUITests:
    type: bundle.ui-testing
    platform: iOS
    scheme: {}
    sources: ExampleAppUITests
    dependencies:
      - target: ExampleApp
    settings:
      INFOPLIST_FILE: ExampleAppUITests/Info.plist

ちなみにいきなり xcodegen コマンドで生成しても良いですが、テストクラス以外にInfo.plistが必要になります。
XcodeでUIテスト用ターゲットを通常通り作ってからXcodeGenで管理するようにしても良いと思います。

Product > TestCmd-U して、テストが実行されればOKです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

実機とシミュレータでフォントサイズが違う?UITableViewCellのカスタムビューのフォントサイズをポイント固定で指定してはいけない

実機とシミュレータのフォントサイズが違う?

UITableViewに配置するカスタムTableViewCellをつくったときの話。

実機テストのとき 「カスタムTableViewCellのフォントサイズが小さい」 という現象がありました。調べた結果、UILabelのFont設定をポイント指定していたことが原因だったのですが、そこに至るまでに時間を吸われたので、おなじ沼にハマらないように :pencil:

シミュレータでの見え方

image.png

上:標準のUITableViewCell
下:カスタムUITableViewCell

実機での見え方

image.png

上:標準のUITableViewCell
下:カスタムUITableViewCell

フォントサイズが変わる

標準のUITableViewCellに注目してみると、
実機とシミュレータでフォントサイズが変わっていることがわかりました。

具体的には、シミュレータでは.SFUI-Regular 17.00pt、実機のときは.SFUIDiplay-Semibold 23.00ptとなっていました。

シミュレータ
image.png

実機
image.png

UILabelのFontの設定をポイント固定にしてはいけない

UILabelのFontをSystem 18.0に設定していました。この設定をBodyに変更することで、実行時の適切なFontに変更されることがわかりました。

Text StyleからBodyを選択する

image.png

Fontが追従しないNGパターン

image.png

Fontが適切に変更されるOKパターン

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Objective-Cで三項演算子のYESの場合を省略する

背景

案件のコード見てたらすごく簡潔に書かれた三項演算子があった!
まさかこんな書き方ができるとは知らなかったので、メモしておきます。

コード

NSDictionary *dic = @{@"a": @"AAA", @"b": @"BBB"};

NSString *str = dic[@"b"] ? : @"";
NSLOG(@"str: %@", str);
// str: BBB

str = dic[@"c"] ? : @"";
NSLOG(@"str: %@", str);
// str: 

Swift だったら...

Swiftならデフォルト値入れるだけで?‍♀️
Swift便利だな〜

let dic = ["a": "AAA", "b": "BBB"]
var str = dic["b"] ?? ""
// str : BBB
print("str : \(str)")

str = dic["c"] ?? ""
print("str : \(str)")
// str :

まとめ

Objective-Cでは三項演算子の第2項は省略できる?
Swiftはデフォルト値入れるだけで、nilの場合の値が決めれる?

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む