我有一個UILabel,listDescription,它以5行顯示。它從數據庫中攫取大量文本,並且總數不確定。我已經實現了「顯示更多」按鈕,按下後,它將展開以顯示整個內容。我已經得到它工作正常,但我希望爲高度變化添加動畫。動畫更改UILabel行數
我的代碼:
@IBAction func toggleDesc(sender: AnyObject) {
if (self.listDescription.numberOfLines>0)
{
self.listDescription.numberOfLines=0
self.showMoreBtn.setTitle("Show Less", forState: UIControlState.Normal)
}
else
{
self.listDescription.numberOfLines=5
self.showMoreBtn.setTitle("Show More", forState: UIControlState.Normal)
}
}
我已經試過包裹numberOfLines在UIView.animateWithDuration變化,但這種變化仍是瞬間完成的。
我最好的猜測是將標籤放在視圖中,禁止從該視圖溢出,擴大行數,抓住標籤的新(未顯示)高度,並增加視圖的大小。但是我不知道在另一個方向做什麼,因爲在「輕量級顯示」被點擊時縮小它。
我很樂意提出建議,並且會做一些自己的嘗試。 [編輯:所以,我最初擔心,如果我替換顯式numberOfLines設置,並剛剛引入高度約束,文本將不會在最後截斷(如果它太長),但它似乎這樣做很好。
這就是說,能夠設置行數而不是高度是很方便的,因爲我希望它在多個設備上看起來一致,即使在我基於屏幕尺寸實現自動字體大小調整後,對於平板電腦等。
這可能是以後的考慮。我在標籤上有一個高度限制,我希望如果我刪除約束並將其包含在某些動畫代碼中,它將調整爲其全尺寸。但是,我仍然不能完全明白代碼的正確性。]
看一看這個問題。看起來好像'numberOfLines'不是可動畫的。 http://stackoverflow.com/questions/20958175/ios-animating-uilabel-expand –
啊。其中的一些信息和背後的想法絕對有幫助,雖然他們提供的示例/解決方案似乎在Objective C中,而不是Swift。 – MikeOShay
我從中學習到,如果給標籤賦予高度約束,並且numberOfLines設置爲0,它將保持在該高度並仍然截斷文本的尾部(如果這是屬性中的設置)。所以這是我的一個擔憂,但仍然存在動畫問題。 現在我很好奇,如果有一種方法可以刪除高度限制並將調整動畫設置爲適當的全高。 – MikeOShay