• 热门专题

IOS学习笔记(5)之视图的层次结构,查找,常用属性与清理学习

作者:  发布日期:2014-02-21 20:37:55
Tag标签:学习笔记  视图  层次  
  •  

    Author:hmjiangqq

    Email:jiangqqlmj@163.com

    (一):视图的层次结构

    1.UIView层次结构可以理解为"视图树"-View Hierarchy

    2.一个视图就是一个容器,当一个视图包含其他视图的时候,两个视图之间就建立了

    一个父子复习。被包含的视图被称为"子视图(subview)",包含的视图称为“父视图或”

    超视图(superview)"

    3.从视觉上看,子视图隐藏了俯视图的内容,设置透明属性可以看到父视图的内容

    4.每个父视图都有一个有序的数组存储着它的子视图,存储的顺序就会影响到每个子视图

    的显示效果,比如:两个兄弟视图重叠在一起,后来被加入的视图就会出现在另外视图的上面

    5.一个视图可以嵌入多个subview,但是只能有一个superview

    视图的常用方法

    当调用addSubView的时候,会对其进行保留,相当于retain了一个对象,当调用removeFromSuperView时候

    会进行释放该对象,相当于release了该对象

    基本的添加和删除子视图的方法

    - (void)removeFromSuperview;
    
    - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
    
    - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
    
    - (void)addSubview:(UIView *)view;
    
    - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
    
    - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
    
    - (void)bringSubviewToFront:(UIView *)view;
    
    - (void)sendSubviewToBack:(UIView *)view;

    实例代码:

     

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
    {
    
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    
        // Override point for customization after application launch.
    
        self.window.backgroundColor = [UIColor whiteColor];
    
        [self.window makeKeyAndVisible];
    
        UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(60, 100, 200, 100)];
    
        view1.backgroundColor=[UIColor redColor];
    
        [self.window addSubview:view1];
    
        [view1 release];
    
        
    
        UIView *view2=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
    
        view2.backgroundColor=[UIColor blueColor];
    
        [self.window addSubview:view2];
    
        [view2 release];
    
        
    
        NSLog(@"view1 superview:%@",[view1 superview]);
    
        NSLog(@"view2 superview:%@",[view2 superview]);
    
        NSLog(@"self.window subViews:%d",[[self.window subviews]count]);
    
        
    
        return YES;
    
    }
    运行截图:

     

    (二):视图的查找

     

    1.UIView类中又一个tag属性,通过这个tag属性可以标示一个视图对象(整数)

    2.获取的方法,viewWithTag:方法来检索标示过的子视图:

    [注]:如果tag值不设置,默认的tag值为0;

    设置和查找方法代码如下:

    UIView *view3=[[UIView alloc]initWithFrame:CGRectMake(60, 250, 200, 100)];
    
        view3.tag=100;
    
        view3.backgroundColor=[UIColor yellowColor];
    
        [self.window addSubview:view3];
    
        [view3 release];
    
        NSLog(@"view3:%@",view3);
    
        //通过tag值查找view
    
        UIView *myView=[self.window viewWithTag:100];
    
        myView.alpha=0.1;
    
        NSLog(@"myView:%@",myView);
    
        return YES;
    

    运行截图:

     

    (三):常用属性:

     

    1.alpha //透明度

    2.backgroundColor //背景颜色

    3.subViews //子视图集合

    4.hidden //是否隐藏

    5.tag //标签纸

    6.superview //父视图

    7.multipleTouchEnabled //是否开启多点触摸

    8.userInteractionEnabled //是否响应触摸事件

    (四)自定义UIView

    继承UIView,创建对象

    (五)视图对象的清理

    如果手动创建一个视图,分配了任何内存,存储了了任何对象的引用,都需要释放资源,

    必须实现dealloc方法。当某个对象的引用计数为0,系统会调用其dealloc方法去释放对象资源

    切记不要手动调用dealloc方法

    -(void)dealloc{

    //释放自定义对象

    [super dealloc];

    }

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规