2016-12-04 33 views
1

這讓我瘋狂。Swift 3 - DateComponents以Label.Text有時顯示「...」

我試圖找出兩次當前時間和最終將從服務器中抓取的設置時間的差異。

這是時間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 OVE和去除(?)將所有的標籤作爲...

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是否有足夠的寬度來存放兩位數字? (例如「24」需要比「11」更多的寬度。) – OOPer

回答

2

使得幀適合文本的大小。你正在尋找的是:

questionsLabel.adjustsFontSizeToFitWidth = true 

上面的代碼將改變字體大小,以適應標籤的寬度。並且還添加

questionsLabel.textAlignment = .center 

它會在標籤中正確呈現文本。