在viewDidLoad中初始化需要的子控件,然后提供改变这些子控件的开放接口,然后使用一个bool变量来保存是否已经设置了子类控件的frame类似
-(void)layoutSubviews { [super layoutSubviews]; #pragma mark 这个变量很重要,如果没有就会导致重复的设置frame导致动画效果很差 if (!_laidOut) { _homeNavigationView.frame = self.bounds; _leftNavigationView.frame = self.bounds; _composeNavigationView.frame = self.bounds; _rightNavigationView.frame = self.bounds; _talkNavigationView.frame = self.bounds; } _laidOut = YES; }
然后在进行alpha和frame改变的动画的时候就会显得很流畅了。