iOS - UISegmentedControl

前言

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UISegmentedControl : UIControl <NSCoding>
    @available(iOS 2.0, *)       public class UISegmentedControl : UIControl, NSCoding
  • UISegmentedControl 的 Items 有两种样式,一种是字符串设置的标题样式,一种是图片设置的样式。

  • 图片设置的样式需要处理图片的渲染模式,以原图显示。处理阴影,如果直接设置 image 出现阴影,这时候需要设置图片的渲染模式以原样显示。

        UIImage *image = [UIImage imageNamed:@"hehe.png”];
        image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];         

1、UISegmentedControl 的创建

  • Objective-C

        // 不设置 frame 时为系统默认大小
        UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems: @[@"大娃", @"二娃", @"三娃", @"四娃"]];
    
        // 将 segmentedControl 添加到 view
        [self.view addSubview:segmentedControl];
  • Swift

        // 不设置 frame 时为系统默认大小
        let segmentedControl:UISegmentedControl = UISegmentedControl(items: ["大娃", "二娃", "三娃", "四娃"])
    
        // 将 segmentedControl 添加到 view
        self.view.addSubview(segmentedControl)

2、UISegmentedControl 的设置

  • Objective-C

        // 设置 frame
        segmentedControl.frame = CGRectMake(10, 30, 300, 50);
    
        // 设置位置
        segmentedControl.center = self.view.center;
    
        // 设置背景颜色
        segmentedControl.backgroundColor = [UIColor lightGrayColor];
    
        // 设置 标题文字、边框、选中项 的颜色
        segmentedControl.tintColor = [UIColor redColor];
    
        // 设置标题文字的 颜色、字体 等属性
        [segmentedControl setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor blueColor], 
                                                              NSFontAttributeName: [UIFont boldSystemFontOfSize:20]}
                                        forState: UIControlStateNormal];
    
        // 设置分段标题
        [segmentedControl setTitle:@"123" forSegmentAtIndex:2];
    
        // 设置分段的图片
        [segmentedControl setImage:[[UIImage imageNamed:@"hehe"]
                                         imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] 
                 forSegmentAtIndex:0];
    
        // 设置分段标题的偏移量
        [segmentedControl setContentOffset:CGSizeMake(10, 7) forSegmentAtIndex:1];
    
        // 设置默认选中值
        segmentedControl.selectedSegmentIndex = 1;
    
        // 获取选中的分段的索引号
        NSInteger selectIndex = [segmentedControl selectedSegmentIndex];
    
        // 获取选中的分段的标题
        NSString *selectTitle = [segmentedControl titleForSegmentAtIndex:[segmentedControl selectedSegmentIndex]];
    
        // 获取分段个数
        NSUInteger numberOfSegments = segmentedControl.numberOfSegments;
    
        // 插入新分段
    
            // 插入标题文字
            [segmentedControl insertSegmentWithTitle:@"蛇精" atIndex:1 animated:YES];
    
            // 插入图片
            [segmentedControl insertSegmentWithImage:[[UIImage imageNamed:@"hihi"] 
                              imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] 
                                             atIndex:4 
                                            animated:YES];
    
        // 删除分段
    
            // 删除指定分段
            [segmentedControl removeSegmentAtIndex:0 animated:YES];
    
            // 删除全部分段
            [segmentedControl removeAllSegments];
    
        // 添加点击触发事件
        [segmentedControl addTarget:self 
                             action:@selector(segmentedControlClick:) 
                   forControlEvents:UIControlEventValueChanged];
  • Swift

        // 设置 frame
        segmentedControl.frame = CGRectMake(10, 30, 300, 50)
    
        // 设置位置
        segmentedControl.center = self.view.center
    
        // 设置背景颜色
        segmentedControl.backgroundColor = UIColor.lightGrayColor()
    
        // 设置 标题文字、边框、选中项 的颜色
        segmentedControl.tintColor = UIColor.redColor()
    
        // 设置标题文字的 颜色、字体 等属性
        segmentedControl.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blueColor(), 
                                                            NSFontAttributeName: UIFont.boldSystemFontOfSize(20)], 
                                        forState: UIControlState.Normal)
    
        // 设置分段标题
        segmentedControl.setTitle("123", forSegmentAtIndex: 2)
    
        // 设置分段的图片
        segmentedControl.setImage(UIImage(named: "hehe")?.imageWithRenderingMode(.AlwaysOriginal), 
                         forSegmentAtIndex: 0)
    
        // 设置分段标题的偏移量
        segmentedControl.setContentOffset(CGSizeMake(10, 7), forSegmentAtIndex: 1)
    
        // 设置默认选中值
        segmentedControl.selectedSegmentIndex = 1
    
        // 获取选中的分段的索引号
        let selectIndex:NSInteger = segmentedControl.selectedSegmentIndex
    
        // 获取选中的分段的标题
        let selectTitle:String? = segmentedControl.titleForSegmentAtIndex(segmentedControl.selectedSegmentIndex)
    
        // 获取分段个数
        let numberOfSegments:Int = segmentedControl.numberOfSegments
    
        // 插入新分段
    
            // 插入标题文字
            segmentedControl.insertSegmentWithTitle("蛇精", atIndex: 1, animated: true)
    
            // 插入图片
            segmentedControl.insertSegmentWithImage(UIImage(named: "hihi")!
                            .imageWithRenderingMode(.AlwaysOriginal), 
                                            atIndex: 4, 
                                           animated: true)
    
        // 删除分段
        segmentedControl.removeSegmentAtIndex(0, animated: true)   // 删除指定分段
        segmentedControl.removeAllSegments()                       // 删除全部分段
    
        // 添加点击触发事件
        segmentedControl.addTarget(self, 
                            action: #selector(UiSegmentedControl.segmentedControlClick(_:)), 
                  forControlEvents: .ValueChanged)

3、Storyboard 中设置

  • 在 Storyboard 场景中设置

    • Segmented Control 设置

      Segment1

      Style 类型
      State Momentary 状态
      Segments 分段数
      Segment 选择分段
      Title 分段标题文字
      Image 分段图片
      Behavior
      -- Enable 可用
      -- Selected 选中
      Content Offset 文字偏移量
    • Control 设置

      Segment2

      Alignment 文字对齐方式
      Content
      -- Selected 选中
      -- Enable 可用
      -- Highlighted 高亮
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/312243

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。