【iOS 开发】基础控件:UISegmentedControl

UISegmentedControl详解 阅读详情
AI摘要

本文详细介绍了如何在iOS中使用UISegmentedControl进行常规操作,包括创建、定位、样式设置、事件监听,以及实现动态添加、修改和删除item的功能。通过实例演示了如何灵活地调整控件内容,适合iOS开发者学习和实践。

iOS 基础控件 UISegmentedControl

1. UISegmentedControl 的常规使用


// 创建分段控制器
let segmentedControl = UISegmentedControl(items: ["Home", "Circle"])

// 设置 UISegmentedControl 控件位置
segmentedControl.frame = CGRect(x: 25, y: 700, width: 340, height: 38)

// 设置 UISegmentedControl 风格颜色
segmentedControl.tintColor = UIColor.gray

// 监听 UISegmentedControl 事件
segmentedControl.addTarget(self, action: #selector(selectChange), for: UIControl.Event.valueChanged)

self.view.addSubview(segmentedControl)

@objc func selectChange(sc: UISegmentedControl) {
    print("分段控制器当前页码:\(sc.selectedSegmentIndex)")
}


效果展示:
segmentedcontrol


2. UISegmentedControl 动态更新 item


// UISegmentedControl 动态插入文字 item
segmentedControl.insertSegment(withTitle: "Cart", at: 2, animated: true)

// UISegmentedControl 动态插入图片 item
segmentedControl.insertSegment(with: UIImage(named: "portrait")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal), at: 3, animated: false)

// UISegmentedControl 修改指定位置的图片
segmentedControl.setImage(UIImage(named: "EyeInvisible")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal), forSegmentAt: 3)

// UISegmentedControl 修改指定位置的文本
segmentedControl.setTitle("Recommend", forSegmentAt: 1)

// UISegmentedControl 删除指定 item
segmentedControl.removeSegment(at: 3, animated: true)

// 设置 UISegmentedControl item 宽度 40
segmentedControl.setWidth(40, forSegmentAt: 4)

// 设置 UISegmentedControl 自适应内容的宽度
segmentedControl.apportionsSegmentWidthsByContent = true


效果展示:
uisegmentedcontrol-gif


附 Github 源码:

ViewController.swift

【IOS 开发学习总结-OC-45】★★ios开发之UI控件——UISegmentedControl与UIImageView UISegmentedControl在头文件中是这样的@interface UISegmentedControl : UIControl <NSCoding>,它继承了UIControl。可以作为活动控件,直接绑定 IBAction 方法。分段控件是个啥?它是可以提供一栏按钮的控件,但每次只能激活其中一个按钮。就像这样:一般什么时候使用分段控件呢?当程序需要输入的不仅仅是布尔值(2个选项),而是多个 阅读详情

相关推荐

iOS分段控件UISegmentedControl使用

在控件库中输入seg搜索控件,在出现Segmented Control后,将其拖到View Controller Scene中。回到故事板,点击View Controller Scene 下的 View Controller 并点开右边的属性面板。通过selectedSegmentIndex取得控件点击索引 ,拖变量名到控件上,然后松开,这样控件就与变量关联了。关联后,属性面板会出现一条线表示控件与变量已关联,到此,成功获取在分段控件点击时的段标题与段索引。同时变量的点在关联后是实心的,关联前是空心的。

1076

IOS UISegmentedControl简介

文章目录常用属性和方法使用,页面的切换AppDelegate.mSubViewController.m颜色随机MainViewController.m 在许多的应用程序中,开发者会加入一些主题选项以便对显示的信息做进一步分类。例如,App Store应用程序的排行榜导航栏上就显示着”付费”、”免费”、”畅销排行”选项,而这种展示方式就是通过UISegmentedControl来实现的。UISegm...

煮酒Shae 9163

自定义UISegmentedControl的iOS开发实践

在如今的移动应用开发中,用户界面(UI)的自定义能力已成为提升用户体验的关键因素。UISegmentedControl,作为一种常见的用户界面元素,使得用户可以在几个选项中切换。然而,苹果默认的UISegmentedControl功能和外观相对简单,无法满足所有场景的需求。自定义UISegmentedControl不仅可以增强应用的视觉吸引力,还能根据应用的主题和品牌特性进行个性化设置。

weixin_42513209的博客 1268

iOS开发基础控件--UISegmentedControl

UISegmentedControl全局外观设置                    分段控件是我们常用的控件之一,今天把具体用法总结了下:           1.初始化UISegmentedControl [plain] view plaincopy NSArray *segmentedArray = [[NSArray al

不积跬步无以至千里,千里之行始于足下! 1007

全面解读iOS UISegmentedControl使用与进阶指南

例如,假设我们正在开发一个音乐播放器应用,我们可能会使用UISegmentedControl来让用户选择播放列表或者歌曲的播放顺序。这不仅方便用户快速选择,同时也增加了界面的交互性。通过本章后续内容的学习,我们将了解如何使用和定制UISegmentedControl,使其在不同场景下发挥最大效用,以及如何处理用户的交互行为,创建更加丰富的用户体验。代理模式是设计模式中一种非常常见的模式,它允许一个对象通过定义的方法来向另一个对象发送请求。在。

weixin_35516624的博客 1194

ios-自定义UISegmentedControl.zip

自定义UISegmentedControl,源代码地址:https://github.com/STShenZhaoliang/STKitSwift

iOS基础控件之UISegmentedControl 分类: ios开发 ...

***UISegmentedControl控件是iOS中比较常用的控件,作为一个iOS手机设备屏幕,一下子放多个UIButton,显然感觉不到美观,作为一个不妥协追求卓越的乔帮主肯定不愿意,所以设计出该控件,以满足平时的需求。*** NSArray *segmentedArray=[[NSArray alloc]initWithObjects:@”一”,@”二”,@”三...

weixin_30672295的博客 121

iOS App开发中的UISegmentedControl分段组件用法总结

UISegmentedControl主要被用来制作分页按钮或添加跳转到不同位置的标签,这里我们就来看一下iOS App开发中的UISegmentedControl分段组件用法总结,需要的朋友可以参考下

L003-基础控件

UIButton:按钮 初始化 - (instancetype)initWithFrame:(CGRect)frame; + (id)buttonWithType:(UIButtonType)buttonType; 常用属性及方法 1.设置标题 - (void)setTitle:(NSString *)title forState:(UIControlState)state; 2.设置标题颜色 -

LiHy_的专栏 386

WorkBuddy任务对话上下文管理:Token、compact与上下文窗口实战指南

在大语言模型应用中,Token作为文本处理的最小单位,直接决定上下文窗口的消耗速度,而上下文窗口则限定了单次对话可承载的信息总量。当对话超出窗口限制时,compact压缩机制会触发有损摘要,导致关键约束丢失或工具调用结果被稀释。合理管理上下文不仅能提升多步骤任务的稳定性,还能显著降低Token成本与响应延迟。在文档处理、代码开发、多步自动化等场景中,通过主动压缩、状态外置、分段喂入等策略,可有效避免任务后期遗忘、版本混乱等问题。本文围绕WorkBuddy的上下文管理机制,从Token与compact的底层原

weixin_29055699的博客 389

真双口RAM---Quartus与Vivado开发环境区别对比

2、写和写冲突:表示两个端口写使能同时有效且写地址相同,此时需要关断一个写,把两个写端口都需要更新的值处理到一个写端口上面,任何的DP RAM 都不支持写和写冲突。以上述直方图统计使用为例,博主在仿真过程中发现,vivado真双口RAM--B端口读写延迟2个clk;1、读和写冲突:如果读和写同时有效,且读和写是同一个地址时,发生RAM读写冲突,此时会把最新的写数据直接赋给读数据,称为写穿通到读。

weixin_54470733的博客 3582

Ios 入门 ----基本的控件

我们做完HelloWord之后在来学习一些最为简单并且很实用的一些控件 1.UIAlertView的实现:   效果如下图:     2.UIActionSheet 的实现  UIActionSheet和UIAlertView的区别 都是用于给用户提示操作 而UIActionSheet是从底部弹出 当用户有危险操作时用来提示 例如用户删除某

把握自己。 2320

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了YOLOv11多模态融合技术,重点介绍基于YOLOFuse框架的RGB与红外线(IR)协同检测方法。通过动态权重分配、跨模态特征对齐等创新设计,实现在低光照等复杂环境下的高精度目标检测,mAP提升高达37%。文章包含实战案例、训练技巧和部署方案,为计算机视觉开发者提供完整的多模态融合解决方案。

weixin_29038345的博客 290

iOS基础控件之UISegmentedControl

***UISegmentedControl控件是iOS中比较常用的控件,作为一个iOS手机设备屏幕,一下子放多个UIButton,显然感觉不到美观,作为一个不妥协追求卓越的乔帮主肯定不愿意,所以设计出该控件,以满足平时的需求。*** NSArray *segmentedArray=[[NSArray alloc]initWithObjects:@”一”,@”二”,@”三”,@”四”,nil]; 创

小王的技术窝 1505

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

EPSON RX8010SJ RTC实战:I2C寄存器配置避坑指南(附完整初始化代码)

本文详细解析了EPSON RX8010SJ RTC芯片在I2C寄存器配置中的常见问题与解决方案,包括TEST位、STOP位和中断控制等关键配置要点。通过实战经验分享和完整的初始化代码模板,帮助开发者避免常见陷阱,确保RTC模块的稳定运行。

weixin_28678831的博客 406

UISegmentedControl 分段控件-IOS开发

声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.youkuaiyun.com/iukey UISegmentedControl分段控件代替了桌面OS上的单选按钮。不过它的选项个数非常有限,因为你的IOS设备屏幕有限。当我们需要使用选项非常少的单选按钮时它很合适。 一、创建 UISegmentedControl* mySegmen

潇洒的程序员 2万+

Openbmc系列之自动化测试框架1

Openbmc作为当下BMC固件领域最流行的开源软件,具备从需求计划、开发、调试、测试、版本管理等完整的体系。在测试领域,Openbmc基于python的robotframework框架,实现Openbmc的自动化测试,为高效发布Openbmc版本提供有力支持。本文作为测试系列文档一,介绍Openbmc自动化测试虚拟Openbmc的环境搭建。

qq_20341747的博客 2109

iOS开发之UISegmentedControl的使用

iOS中的分段选择控制器UISegmentedControl,这一控件有什么作用呢 每个segment都能被点击,相当于集成了多个button 通常我们会点击不同的segment来切换不同的view 直接上码: #pragma mark - Create Segmented Control - (void)createSegmentControl{ //先生成存放标题的数据 N...

C_philadd的博客 1602

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 429

24届数字IC设计/验证秋招总结贴——先看这个

为方便快速进行查找该专栏的内容,将所有内容链接均放在此篇博客中整理不易,欢迎订阅~~

qq_42135020的博客 8411

iOS UISegmentedControl

In this tutorial, we’ll be discussing and implementing the UISegmentedControl in our iOS Application. 在本教程中,我们将在iOS应用程序中讨论和实现UISegmentedControl。 UISegmentedControl (UISegmentedControl) A UISegmented...

从零开始的教程世界 750

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

iOS开发之UISegmentedControl实现分页切换

在我们做应用开发的时候,难免会需要那种切换的效果,如果直接下载三方库,可能你没有自己写的理解的那么透彻,所以这里我介绍一下如何用UISegmentedControl进行切换。 有三个view,分别为view1、view2、view3,通过UISegmentedControl进行三个view的切换。 @interface UIViewDemoViewController

WJP19930121的博客 772

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

iOS 26 旧功能移除:UISegmentedControl 旧版样式设置方法失效

在 iOS 16 中,苹果移除了 UISegmentedControl 的一些旧版样式设置方法,导致这些方法在新版本中失效。这主要是因为苹果在 iOS 13 引入了新的 UI 设计语言(如 SF Symbols 和现代化控件样式),并逐步弃用了旧 API 以提高性能和一致性。以下我将逐步解释原因、提供替代方案,并给出代码示例,帮助您解决此问题。以下是一个完整的 Swift 示例,展示如何在 iOS 16+ 中正确设置 UISegmentedControl 样式。代码使用新方法替代旧版失效方法。

2501_94069464的博客 982

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 【iOS 开发】基础控件:UIPageControl
下一篇: 【iOS 开发】滑块控件 UISlider
Lucky_William
博客等级 码龄11年 161粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值