iOS 开发学习之 User Interface(3)iOS 坐标系和 UILabel 与 UIButton

注意:控制器的视图默认是透明的,需要给其设置背景。

    a. 创建UILabel对象,使用带frame参数的初始化方法。

    此参数是结构体类型,包含了该UI对象显示在视图上的位置,尺寸。

    iOS 坐标系:

       屏幕左上角为(0,0)起始点,

       终点:(各代设备尺寸不同而变化)

       3GS及之前:(320,480) — 像素 — (320,480)

       4,4s:           (320,  480) — 像素 — (640,960)

       5,5s:(320,568)

   6,6s:(375,667)(plus:414,736)

b. 将UILabel对象添加到当前控制器的视图上。

 

UILabel基本属性

     .text                      // 设置文字

     .font                      // 设置文字字体 {

    // 大小

      lb.font = [UIFont systemFontOfSize:17];

      //粗体

      lb.font = [UIFont boldSystemFontOfSize:30];

      //斜体,只对英文有效

      lb.font = [UIFont italicSystemFontOfSize:17];

    //系统的字体

      NSArray *arrFonts = [UIFont familyNames];

    //设置自定义字体

    lb.font = [UIFont fontWithName:@"Bodoni 72 Oldstyle" size:14];

}

     .textColor               // 设置文字颜色 {

    //设置背景色

    lb.backgroundColor = [UIColor redColor];

    //自定义颜色值

    lb.backgroundColor = [UIColor colorWithRed:199.0/255.0 green:150.0/255.0 blue:100.0/255.0 alpha:1.0];

}

     .textAlignment         // 设置文字布局

     .backgroundColor    // 设置文字背景

     .lineBreakMode       // 设置文字换行模式{

    lb.lineBreakMode = NSLineBreakByClipping;

    lb.lineBreakMode = NSLineBreakByTruncatingHead;

    lb.lineBreakMode = NSLineBreakByTruncatingTail;

    lb.lineBreakMode = NSLineBreakByWordWrapping

}

     .numberOfLines      //  设置文字行数,设为 0 代表任意多行,会自动换行

     .clipsToBounds       // 设置是否将子图层或子视图的边界剪切至主图层或主视图的边界

     .adjustsFontSizeToFitWidth    // 文字大小适应视图对象的宽度

     .minimumScaleFactor            // 最小文字缩放因子 0~1范围,

     .shadowColor                       // 视图的阴影颜色

     .shadowOffset                      // 视图的阴影偏离位置

     .layer                     //  设置视图对象的图层属性 {

          -.borderColor          // 设置视图的边框颜色

          -.borderWidth         //  设置视图的边框宽度

          -.cornerRadius        //  设置视图的圆角弧度

}

     .attributedText       // 设置带属性的文字

 

  //取得当前视图的宽度、高度

    CGFloat w = self.view.frame.size.width;

    CGFloat h = self.view.frame.size.height;

 

注意:

  //将label贴到视图上

    [self.view addSubview:lb];

 

  /*

     app开发:

     原生(页面在客户端)

     网页(页面在服务器端)

     混生(前两者混合)

     网站推荐:coredova--开发混生框架,apicloud

     */

    

  // 创建可变的带属性文字的属性

    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:lb.text];

    // 为文字添加属性

    [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, 2)];

  //    [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:200] range:NSMakeRange(6, 8)];

    //

    [attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(2, 5)];

    [attrStr addAttribute:NSBackgroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(2, 5)];

    //

    lb.attributedText = attrStr;

 

    //研究

    //Core Text 文字排版

 

 

 

 UIButton

   按钮,用户可触摸,并给予用户响应的视图控件。

   继承自UIControl (UIControl 继承自UIView),注意与UILabel的区别

     UIControl? 是所有控制类对象(如按钮,滑动器等)的基类。

     控制?iOS编程是基于事件驱动的。事件是发送给应用程序来通知它用户动作的对象。事件发生后,会产生消息发送给应用程序(UIApplication对象),由它进行消息的分发,指定由谁来处理此事件。

 

UIButton创建及基本属性,方法

    两种初始化方式:

       // initWithFrame:

       // buttonWithType: 使用系统给定的类型创建button,注意部分类型已无效。

    .layer                    // 图层属性设置按钮边框

    setTitle:forState:    // 在不同按钮状态设置文字{

    //设置Button的文字,带有左移或右移的枚举可以进行或、与或运算

    [btn setTitle:@"我是一" forState:UIControlStateNormal];

    //    UIControlStateNormal       = 0,           //正常状态

    //    UIControlStateHighlighted  = 1 << 0,      //高亮状态              // used when UIControl isHighlighted is set

    //    UIControlStateDisabled     = 1 << 1,      //禁用状态

    //    UIControlStateSelected     = 1 << 2,      //被选中状态            // flag usable by app (see below)

    //    UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use    

    //    UIControlStateReserved     = 0xFF000000

}

   . titleLabel              //  按钮上文字所在的UILabel ,只读属性{

    // 访问Button里的label,redonly

    btn.titleLabel.text = @"我被修改了";

    btn.titleLabel.backgroundColor = [UIColor redColor];

}

    setTitleColor:forState:   // 在不同按钮状态设置文字颜色

    setContentHorizontalAlignment:  // 设置按钮内容的横向布局

{

    //设置Button内容的布局

    [btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];

    [btn setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];

}

    setContentVerticalAlignment:     // 设置按钮内容的纵向布局

    .backgroundColor                     // 按钮背景色,不与状态关联

  setSelected:          //使按钮处于选中状态{

    //使按钮处于选中状态

    [btn setSelected:YES];

}

  setBackgroundImage:forState:    // 在不同按钮状态设置背景图片    [ 背景颜色随状态变化? ]

    setImage:forState:                     // 在不同按钮状态设置前景图片{

    //添加前景图片

    [btn setImage:[UIImage imageNamed:@"btnTree"] forState:UIControlStateNormal];

}

  {

     UIImage?图片数据. 三种初始化方法:

    imageNamed:                     // 从缓存中读取图片,若无,则从程序包中找,找到后,先缓存,再返回。否则返回nil

        imageWithContentsOfFile:   // 直接从路径中找图片

        imageWithData:                 //  从二进制数据创建图片

        *从UIImage获取图片尺寸

    //二进制流

    NSData *dataForImg = [NSData dataWithContentsOfFile:@"/Users/arlen/Desktop/code/UIButtonBasic/UIButtonBasic/btnBackChange.png"];

    UIImage *imgForUse2 = [UIImage imageWithData:dataForImg];

     }

 

UIButton 状态,事件  

    .state              // 可设置按钮的状态,正常,高亮,选中等。按钮初始是正常状态,当点击后,状态发生变化。            

    

     ***addTarget:action:forControlEvents: // 为某一特定事件添加目标对象和行为。(实际上是在内部消息分发表中注册该添加操作)

    /* target: 目标对象,消息的接收者

         action:  标识行为的选择器

         controlEvents: 事件类型

     */

 

posted @ 2016-01-16 11:54  守木  阅读(274)  评论(0编辑  收藏  举报