#pragma mark - 添加第index个子控制器到ScrollView上
//一定要牢记!!! --> bounds是以自身的content内容的左上角为原点的!
// 最终得到的结论就是: childView.frame = self.scrollView.bounds ;
- (void)addChildViewControllerIntoScrollView:(NSInteger)index {
//添加第index个子控制器:
UIView *childView = self.childViewControllers[index].view ;
//如果子控制器有父控制器 , 则说明子控制器已经被父控制器布局过一次了添加过一次了! 不用反复设置scrollView 的子视图的尺寸了!
if (childView.superview) return ;
//如果子视图被添加到了父视图上 , 则会有window , 如果有window就说明子视图已经布局过了 , 不用反复设置scrollView 的子视图的尺寸了!
if (childView.window) return ;
//还有一种方法是通过控制器来判断:如果控制器的view已经被加载过, 如果控制器的view已经调用过viewDidLoad方法 , 就返回 ;但是这句方法要在 添加第index个子控制器: UIView *childView = self.childViewControllers[index].view 这个方法之前 , 否则永远返回YES ;
if (self.childViewControllers[index].isViewLoaded) return ;
CGFloat scrollViewW = self.scrollView.width ;
CGFloat scrollViewH = self.scrollView.height ;
childView.frame = CGRectMake(index * scrollViewW, 0, scrollViewW, scrollViewH) ;
[self.scrollView addSubview:childView] ;
}
愿编程让这个世界更美好
网友评论