Swiftで時計表示の桁数が1桁の時と2桁の時の調整
時計表示の桁数が1桁の時と2桁の時
Swiftでデジタル時計を実装するとき、表示を見ていると桁数が1桁のときと2桁のときがあるのが判ります。0~9までの時間の時は一桁になってしまいます。これを、0~9
の時は00, 01,02 ...etc
みたいな感じにしたいと思いました。桁数を2桁に揃えるためには、時刻を取得したそれぞれの変数に対し、if文で10
より小さい場合に、"0"
の文字を付け加えて桁を揃えればよいです。
実行画面
今、時間の関係で秒のところしか、01
となってませんが、分も、時も、こうしていきます
step1
時刻を取得する
/*
現在の詳細日時を取得する
*/
print("現在の詳細日時を取得する")
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
print("hours = \(hour):\(minutes):\(seconds)")
step2
IntをStringにキャスト
取得した時刻はIntなので、これでは、ラベルのテキストに入らないのでキャスト変換します。
//ラベル
WhatHour.text = String(hour)
WhatMinute.text = String(minutes)
WhatSeconds.text = String(seconds)
step3
if文で桁を制御
このままですと、前途にもあるように、1桁のときと2桁のときが発生してしまいます。これを、if文で制御して、ラベルに代入しているところを書き換えます
if.swift
if (seconds < 10) {
//グローバル変数
Whatseconds = "0" + String(seconds)
Whatminutes = "0" + String(minutes)
Whathour = "0" + String(hour)
print(Whatseconds!)
}else{
Whatseconds = String(seconds)
Whatminutes = String(minutes)
Whathour = String(hour)
}
label.swift
WhatHour.text = Whathour!
WhatMinute.text = Whatminutes!
WhatSeconds.text = Whatseconds!
全ソース
import UIKit
var Whathour:String?
var Whatminutes:String?
var Whatseconds:String?
class ViewController: UIViewController {
@IBOutlet weak var WhatHour: UILabel!
@IBOutlet weak var WhatMinute: UILabel!
@IBOutlet weak var WhatSeconds: UILabel!
//Timerを定義
var timer: Timer!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
/*
一秒ごとに処理を実行する
*/
print("一秒ごとに処理を実行する")
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
timer.fire()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
一秒ごとに処理が実行される関数
*/
func update(tm: Timer) {
// do something
/*
現在の詳細日時を取得する
*/
print("現在の詳細日時を取得する")
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
print("hours = \(hour):\(minutes):\(seconds)")
/*
10より小さい場合に、「0」の文字を付け加えてラベルに代入
*/
if (seconds < 10) {
Whatseconds = "0" + String(seconds)
}else{
Whatseconds = String(seconds)
}
/*
10より小さい場合に、「0」の文字を付け加えてラベルに代入
*/
if (minutes < 10) {
Whatminutes = "0" + String(minutes)
}else{
Whatminutes = String(minutes)
/*
10より小さい場合に、「0」の文字を付け加えてラベルに代入
*/
}
if (hour < 10) {
Whathour = "0" + String(hour)
print(Whatseconds!)
}else{
Whathour = String(hour)
}
print("labelに代入")
WhatHour.text = Whathour!
WhatMinute.text = Whatminutes!
WhatSeconds.text = Whatseconds!
}
}