如果項(xiàng)目中控件的約束用的是masonry,現(xiàn)在希望實(shí)現(xiàn)點(diǎn)擊按鈕漸變出現(xiàn)控件,那么方法有很多種,其中通過UIView的Animation方法是可以實(shí)現(xiàn)的.但是這里會(huì)有一個(gè)小坑,可能會(huì)造成出現(xiàn)的動(dòng)畫效果和預(yù)期的不一樣.原因在于所需要?jiǎng)赢嬁丶娜萜骼锩鎯?nèi)容的多少.
// 1.實(shí)例化控件并通過masonry設(shè)置約束
UILabel *label = [UILabel createOneLabel:CGRectZero title:@"test" superView:self.view fontSize:13 textColor:[UIColor redColor]];
self.label = label;
label.backgroundColor = [UIColor grayColor];
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.equalTo(self.view);
make.height.equalTo(@30);
make.top.equalTo(self.view).offset(400);
}];
// 2.點(diǎn)擊按鈕的方法中實(shí)現(xiàn)動(dòng)畫效果
[UIView animateWithDuration:2 animations:^{
if (btn.selected == YES) {
self.label.height = 100;
}else{
// 和文本內(nèi)容有關(guān)
// 如果容器內(nèi)部內(nèi)容所需高度大于height 那么就是所需要的漸變
// 如果容器沒有內(nèi)容,那么漸變的效果就突兀了
self.label.height = 15;
}
}];
-
這是label沒有文字顯示出來的效果,當(dāng)動(dòng)畫中height改為0就不會(huì)有這種突兀了
432.gif 當(dāng)label中有文字,則根據(jù)文字具體大小,動(dòng)畫效果是不同的.
123123.gif