2016-12-04 16 views
1

これは私を狂ってしまいます。Swift 3 - Label.TextへのDateComponentsは時には "..."を表示します

私は現在の時刻と設定時刻の2倍の差異を見つけようとしていますが、最終的にサーバーから取得されます。

これはパラメータがない瞬間にはgetTimeDifference()の機能です。

let formatter = DateFormatter() 
let userCalender = Calendar.current; 
let requestedComponent : Set<Calendar.Component> = [.month,.day,.hour,.minute,.second] 


public func getTimeDifference() -> DateComponents 
{ 
    formatter.dateFormat = "MM/dd/yyyy hh:mm:ss a" 

    let _startTime = Date() 
    let _endTime = formatter.date(from: "12/05/2016 14:01:00 a") 


    let timeDifference = userCalender.dateComponents(requestedComponent, from: _startTime, to: _endTime!) 
    return timeDifference 
} 

この

は、私はこのコードを実行し、これまでそれはしかし、間隔のいくつかは、それが表示されます数秒のために完全に正常に動作するとき、私は私のHomepageViewController

@IBOutlet weak var labelHours: UILabel! 
@IBOutlet weak var labelMinutes: UILabel! 
@IBOutlet weak var labelSeconds: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateCountdown), userInfo: nil, repeats: true).fire() 
    // Do any additional setup after loading the view. 
} 

func updateCountdown() -> Void { 

    let time = Countdown().getTimeDifference() 

    labelHours.text = time.hour?.description 
    labelMinutes.text = time.minute?.description 
    labelSeconds.text = time.second?.description 
} 

をして持っているものである...

Working Not working

疑問符(?)は、画像abを生成します。オベと(?)を削除するには、...

labelHours.text = time.hour?.description 
labelMinutes.text = time.minute?.description 
labelSeconds.text = time.second?.description 

labelHours.text = time.hour.description 
labelMinutes.text = time.minute.description 
labelSeconds.text = time.second.description 
+5

各UILabelの幅は2桁で十分ですか? (たとえば、「24」は「11」よりも幅が必要です)。 – OOPer

答えて

2

など、すべてのラベルが、フレームは、テキストのサイズに合うようにします設定します。あなたが探しているのは:

questionsLabel.adjustsFontSizeToFitWidth = true 

上記のコードは、ラベルの幅に合わせてフォントサイズを変更します。また追加する

questionsLabel.textAlignment = .center 

ラベルにテキストを正しく表示します。

関連する問題