20160905: 自定制 tabBar,√ 用Frame

- (void)layoutSubviews {

    [super layoutSubviews];
    
    //重新 setFrame 之后, 调用。
    // Frame/约束    最后一次 修改后, 调用 显示 。
    
    
    CGFloat btnW = kScreenWidth/5;
    
    
    
    
    
    __block int index = 0;  // __block ,不然他 释放。  不加 ,就是个 临时变量
    
    
    for (UIView * subView in self.subviews ) {
        
        if ( [subView isKindOfClass:[ UIControl class ]  ]){
            
            
        
                
                if ([subView isKindOfClass:[ UIButton class] ]) {
                    
                
                    
                    CGFloat offsetX = (kScreenWidth-40.0)/2;
                    
                    
                    
                    
                    subView.frame = CGRectMake(offsetX , 4 , 40, 40);
                //   x+5,     随机值,      不能解决 屏幕 适配 的问题。
                    
                    
                    
                }else{
                    //index  跟打印的 没关系。 反正看不到 源代码。    根据 业务逻辑来。
                    
                    
                    
                    CGRect lastFrame = subView.frame;
                    
                    
                    
                    if (index > 1){
                        
                        
                        lastFrame.origin.x = btnW * (index + 1);
                        
                        
                        
                    }else {
                        
                        lastFrame.origin.x = btnW * index;
                        
                      
                        
                        
                    }
                    
                    
                
                    lastFrame.size.width = btnW;//系统默认 四个, 我们是五个,  多了一个 自定制的。
                    
                    subView.frame = lastFrame;
                    
                    index ++ ;
                    
                }
                
            
            
        }
        
    }

}

你可能感兴趣的:(20160905: 自定制 tabBar,√ 用Frame)