項目中有這樣的需求,要顯示一本書的概述,默認顯示2行,點擊展開按鈕,顯示全部,點擊收回,有顯示2行。
開始的時候按鈕事件中,可能寫的是這樣一段代碼:
if (isExpand) {
[lblBrief setNumberOfLines:2];
lblBrief.text = [StringUtil subString:strBrief AndSubLength:90];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefDown"] forState:UIControlStateNormal];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefDown"] forState:UIControlStateHighlighted];
}else{
[lblBrief setNumberOfLines:0];
lblBrief.text = strBrief;
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"] forState:UIControlStateNormal];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"] forState:UIControlStateHighlighted];
}
可以通過setNumberOfLines:0,來讓概述的所以內容顯示出來,但如果,不計算所要顯示全部內容的總高度,label的寬高是不會自動增大的。
else{
[lblBrief setNumberOfLines:0];
lblBrief.text = strBrief;
CGSize constraint = CGSizeMake(self.view.frame.size.width - (15 * 2), 20000.0f);
CGSize size = [strBrief sizeWithFont:[UIFont systemFontOfSize:10]constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
[brief setFrame:CGRectMake(15,160,size.width,size.height)];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"]forState:UIControlStateNormal];
[btnBrief setImage:[UIImage imageNamed:@"detailBriefUp"]forState:UIControlStateHighlighted];
}