iOS14のUIDatePickerでやたらAutoLayoutのエラーが出てくる
iOS14でUIDatePickerが新しくなったんだけど、これをタップして選択画面を出したタイミングでAutoLayoutのエラーがもりもり出てくる。
試した環境
シミュレータの画面サイズによって出たり出なかったりするかな?と思って色々見てみたけどどれも同じだった。
コード
import UIKit class ViewController: UIViewController { let datePikcer = UIDatePicker() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white datePikcer.translatesAutoresizingMaskIntoConstraints = false view.addSubview(datePikcer) NSLayoutConstraint.activate([ datePikcer.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor), datePikcer.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor) ]) } }
エラー
長すぎるので全体はgistに。
https://gist.github.com/ohnishiakira/02fd577c70d263186212d8c6c98423ec
一番最後の↓がなんかヒントになりそうな気はするが、解決方法は分からずじまい。
2021-02-27 20:05:29.268292+0900 DatePickerSample[4410:161030] [DatePicker] UIDatePicker 0x7ff9e6c20390 is being laid out below its minimum width of 280. This may not look like expected, especially with larger than normal font sizes.
「Effective Ruby」を買った
普段自分が手足のように使っているRubyでも知らない事がまだまだ沢山あるんだな、という事が分かって良かった。
- 作者: Peter J. Jones,arton,長尾高弘
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/09
- メディア: 大型本
- この商品を含むブログ (2件) を見る
ガッと開いたページでこの一言を見つけてしまい、すみませんでしたという気持ちになった。
Ruby初心者は
method_missing
の存在を知ると、まるでぜひ使ってくれと言わんばかりの汎用ツールを見つけたとでも思うようだ。(p.115)
RubyGemsで公開されていないgemを使う
自分が作ったgemをRubyGemsにアップする前に使ってみたい、諸事情でRubyGemsでは公開されていない*1、masterブランチのものを直接使いたい、などの理由でgem install
でインストールできないgemを使いたい時がある。
今回はMarkdownパーサであるqiita-markdownを使ってみたかったので、このgemをサンプルに書いている。このgemはRubygemsに公開されているので、下記に書いてあるような手順を踏まなくてもふつうにgem install
でインストールできる。
ソースコードはあらかじめvendor/
以下でgit clone
してある。
bundlerを使う
Bundlerを使うのが手っ取り早い。Gemfile
にgemの名前、置いてある場所を書いてbundle install
するだけ。
source "https://rubygems.org" gem "qiita-markdown", path: "vendor/qiita-markdown", require: "qiita/markdown"
ソースコードの方は下記のようにrequire "bundler"
してBundler.require
する。これだけでGemfile
に書いてあるgemを呼び出してくれる。便利。
#!/usr/bin/env ruby require "bundler" Bundler.require # ...
bundlerを使わない
なんとなくGemfile
を書くのがだるい時がある。そういう時はソースコードから直接require
して済ませる。
大抵のgemはlib
以下にrequire
すべき対象のファイルが置いてあるため、このlib
ディレクトリをRubyの$LOAD_PATH
に追加したあと、通常通りrequire
する。
#!/usr/bin/env ruby $LOAD_PATH.unshift File.expand_path "vendor/qiita-markdown/lib" require "qiita-markdown" # ...
*1:社内だけで使っているgemなので公開できないなど