2017-05-19 80 views
0

我有一個小問題,我的UILabelenter image description hereSwift:UILabel MultiLine

這是我的代碼片段:下面的圖片

let label = UILabel(frame: CGRect(x: 0, y: (0), width: 350, height: 80)) 
    label.center = CGPoint(x: (view.frame.size.width/2), y: (view.frame.size.height/2)) 
    label.font = UIFont(name: "Futura", size: 35) 
    label.textAlignment = .center 
    label.numberOfLines = 0 
    label.text = "Total\n\(dataOverview["totClean"])" 

我想使標籤成爲:

Total 95

我已經添加label.numberOfLinesTotal\n...但仍不工作。我做錯了嗎?在此先感謝

解決了很好的答案,並在下面建議。在這裏我現在標籤:

enter image description here

+0

您是否在標籤上設置了任何約束? –

+1

只需將'UILabel'高度增加到'150' –

+0

^^您可以這樣做或不使用固定的字體大小,但上述應該可以正常工作。 –

回答

1

label.sizeToFit()添加到此結尾

+0

從長遠來看,我認爲這不是一個好的解決方案 - 假設您將應用翻譯成不同的語言或編號變成10000? 然後UILabel將變成huuuuuuge,並可能與你的圈子重疊。 –

+0

@GrzegorzKrukowski我的意思是所有情況..有一千種方法來解決問題。如果這些是有人正在處理的因素,那麼我會認爲應該考慮更多預防措施的地獄......像硬編碼您的標籤文本..?或硬編碼轉義序列...我認爲你是正確的大:) – moni15

+0

嗯,我強烈反對 - 當UILabel與另一個視圖重疊並且可以覆蓋它時,不應該在這種情況下使用sizeToFit()。 例如,當您調整UITableViewCell的大小並且希望它增長時確定,但絕對不在此處。 –

1

你需要增加幀大小120 80是不夠的,您的字體大小:

let label = UILabel(frame: CGRect(x: 0 y: 0, width: 350, height: 120)) 

或者在我看來,一個更好的解決方案將是做這個:

let label = UILabel(frame: CGRect(x: 50, y: (50), width: 350, height: 80)) 
    label.center = CGPoint(x: (view.frame.size.width/2), y: (view.frame.size.height/2)) 
label.font = UIFont(name: "Futura", size: 35) 
label.textAlignment = .center 
label.numberOfLines = 0 
label.text = "Total\n95)" 
//make a font scaling to fit text inside label 
label.adjustsFontSizeToFitWidth = true 
label.minimumScaleFactor = 0.5 

用這種方法你可以調整你的標籤來填充一個圓的內部,並確保它不會重疊。

假設您將翻譯到您的應用程序或只是數字變得足夠大,UILabel將繼續增長。 只是改變的UILabel的大小永遠是從來沒有一個很好的解決方案,無論是label.sizeToFit(),因爲它導致喜歡這裏的問題:

enter image description here

相較於大小的文本框很好地適應圓心:

+0

'label.sizeToFit'爲我工作,無需更改高度標籤。我也嘗試了這個和它的作品,但我需要一些內部的自定義標籤,所以對於我來說高度80就足夠了。感謝+1作爲工作回答 –

+1

@MarioMargoPradipta我真的會建議採用逐漸減小尺寸的字體方法 - 就像長期運行的一個更好的解決方案,可以防止UILabel重疊cricle並失去控制。 –

+1

感謝您的意見。我將寬度減少到80.我將編輯我的照片。在此先感謝 –