• 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: 事件类型

         */

  • 相关阅读:
    java(一) 基础部分
    Spring使用Autowiring自动装配 解决提示报错小技巧
    idea 中dao层自动生成接口
    从git远程仓库Checkout项目到本地
    idea 新建项目上传至git(coding)
    使用Travis CI给hexo部署做持续集成
    LeetCode395-至少有 K 个重复字符的最长子串
    Java注解
    Java反射
    Java反射应用实例
  • 原文地址:https://www.cnblogs.com/arlenliu/p/5135240.html
Copyright © 2020-2023  润新知