めも
- Button.setTitle
- Timer.scheduledTimer
- AVAudioPlayer
- UserDefaults
- UINavigationController
画面遷移
- Viewのコードを書くSwiftファイルを追加(HogeViewController)
- Main.storyboard -> ViewController
- Editor -> Embed In -> Navigation Controller
- Navigation Controller が追加される(画面遷移をナビゲーションするためのクラス)
- ViewController に Navigation Item が追加される
- Object Library -> ViewController をエディタエリアに追加
- 新しい View の Identity inspector -> HogeViewController
- Date Picker を配置
設定画面
- DatePickerのバグ対応
- 1回目のValueChangedはイベントが発生しない。
- datePicker.setDate() すると良さそう。
Swift – UITest
Understanding UI Testing using iOS, Xcode 9 and Swift
Identity inspector
Accessibility -> identifier でIDをセットしてみる。
IDの問題ではなくてテストの順番で今どのViewを開いているかが問題?
でもなくて、
setUp() で 毎回、
XCUIApplication().launch()
しているのでSliderの値が変わっていると、Labelの内容も変化させているので、
初期値の Label ではなくて、Slider に合わせた値がView上に残っているため、
操作によって変化しない ID が必要、ということでした。
###Swift – Slider by step
(stackoverflow)UISlider with increments of 5
code:swift
let step: Float = 5
@IBAction func sliderValueChanged(sender: UISlider) {
let roundedValue = round(sender.value / step) * step
sender.value = roundedValue
// Do something else with the value
}
Swift – UserDefaults
UserDefaults.standard
register(defaults:)
Swift – Layout
Auto Layout Guide
Simple Constraints
Adaptivity and Layout
横に部品を2個配置した場合の設定例など。
Views with Intrinsic Content Size
ボタンをbottomに寄せれば良さそう。
ラベルは中央。
Labelの配置例
Label.centerX = Superview.centerX
Label.top = Superview.centerY
Label.leading = Superview.leadingMargin + 80
Auto Layout Localization:
Fixed leading and trailing constraints may cause clipping,
one of them should have a constant ≥ standard space.
上のWarningが出る場合は、Size Inspector -> Constraints のなかで leading / trailing が固定値(=)になっているものを ≥ に変更する。
Label, Button を縦に配置
Safe Area.trailing ≥ rightButton.trailing + 57
Label.centerX = centerX
Label.top = CenterY -50
Label.leading = Safe Area.leading + 162
leftButton.top = Label.top + 105
LeftButton.centerX = centerX
LeftButton.leading ≥ Safe Area.leaging + 100
rightButton.leading ≥ Safe Area.leading + 57
rightButton.centerX = centerX
rightButton.top = leftButton.bottom + 25
上を改善
Label.centerX = centerX
Label.centerY = CenterY -50
Label.leading = Safe Area.leading + 162
leftButton.top = Label.top + 105
LeftButton.centerX = centerX
LeftButton.leading ≥ Safe Area.leaging + 100
rightButton.leading ≥ Safe Area.leading + 57
rightButton.centerX = centerX
rightButton.top = leftButton.bottom + 25
ボタンを横に並べてみる
Safe Area.trailing ≥ rightButton.trailing + 93
Label.trailing = rightButton.trailing
Label.leading = leftButton.leading
Label.centerY = centerY - 40
leftButton.lastBaseline = rightButton.lastBaseline
leftButton.centerX = centerX - 55.5
leftButton.top = Label.bottom + 73
leftButton.leading ≥ Safe Area.leading + 93
rightButton.centerX = centerX + 55.5
rightButton.width = leftButton.width