添加第index个子控制器到并优化性能

2017-04-05  本文已影响11人  小苗晓雪
#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] ;
    
}

愿编程让这个世界更美好

上一篇 下一篇

猜你喜欢

热点阅读