05-按钮的基本使用-开发步骤

  • 从Xcode5开始,图片资源都放到Images.xcassets中进行管理
  • 先添加必须的图片到Images.xcassets中

调整界面尺寸

  • 由于模拟器的默认尺寸是3.5inch,为了避免出现不必要的麻烦,最好将storyboard中的UI界面尺寸也调整为3.5inch

添加4个方向按钮和2个缩放按钮

  • 拖拽按钮到storyboard上
  • 设置按钮的尺寸为35x35

设置按钮的背景图片

  • 按钮是有多种状态的:
  1. normal(普通状态):默认情况, UIControlStateNormal
  2. highlighted(高亮状态):按钮被按下去的时候(手指还未松开), UIControlStateHighlighted
  • 设置按钮在不同状态下的背景图片(为了保证高亮的图片正常显示,必须设置按钮的type为custom)

设置头像按钮

  • 普通状态:红色文字“点我啊”
  • 高亮状态:蓝色文字“摸我干嘛”

跟控制器建立联系

  • 通过修改控件的frame属性就可以修改控件在屏幕上的位置和尺寸
  • 比如点击“向上”按钮,让按钮的y值减小即可

  - (IBAction)top:(UIButton *)sender {

     CGRect btnFrame = self.headBtn.frame;

     btnFrame.origin.y -= 10;

     self.headBtn.frame = btnFrame;

  }

  • 下面代码是错误的,OC语法规定:不允许直接修改对象的结构体属性的成员

   self.headBtn.frame.origin.y -= 10;

去除autolayout

  • 如果发现通过代码无法修改控件的位置或者尺寸时,应该去掉storyboard里面的autolayout功能,这是自iOS6开始出现的特性
  • 顾名思义,autolayout是用来自动布局的,用来束缚控件的位置和尺寸。去掉这个功能,控件的位置和尺寸就不再有一些固定的束缚。

代码创建按钮

  • 在开发过程中,并不是每次都通过storyboard拖控件完成UI界面,因为storyboard上面的界面是“固定死”的,有时候可能会在程序运行过程中动态地添加一些新的控件到界面上
  • 比如QQ的聊天信息,是有人发出一条信息后才动态显示出来的。因此,需要掌握如何用代码动态地添加控件
  • 实际上,storyboard的本质就是根据图形界面描述转成相应的代码
  • 下面演示用代码创建按钮

   // 1.创建一个自定义的按钮

  UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

  // 2.添加按钮

   [self.view addSubview:btn];

  // 3.设置按钮的位置和尺寸

  btn.frame = CGRectMake(100, 100, 100, 100);

  // 4.监听按钮点击(点击按钮后就会调用self的btnClick方法)

  [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

  // 5.设置按钮在默认状态下的属性

  // 5.1.默认状态的背景

   [btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];

  // 5.2.默认状态的文字

  [btn setTitle:@"点我啊" forState:UIControlStateNormal];

  // 5.3.默认状态的文字颜色

   [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];   

  // 6.设置按钮在高亮状态下的属性

  // 6.1.高亮状态的背景

  [btn setBackgroundImage:[UIImage imageNamed:@"btn_02"] forState:UIControlStateHighlighted];

  // 6.2.高亮状态的文字

  [btn setTitle:@"摸我干啥" forState:UIControlStateHighlighted];

  // 6.3.高亮状态的文字颜色

   [btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];

Storyboard到代码的转换

  // 创建一个自定义的按钮

   UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

  // 默认状态的背景

   [btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];

  // 默认状态的文字

   [btn setTitle:@"点我啊" forState:UIControlStateNormal];

  // 默认状态的文字颜色

   [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

  

 

转载于:https://www.cnblogs.com/YangFuShun/p/4317923.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】sklearn数据特征预处理:归一化和标准化

归一化处理 特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间 from sklearn.preprocessing import MinMaxScaler def mm():"""归一化处理:return: NOne"""mm MinMaxScaler(feature_range(2,3))data mm.fit_transform(…

LeetCode 1848. 到目标元素的最小距离

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums (下标 从 0 开始 计数)以及两个整数 target 和 start ,请你找出一个下标 i ,满足 nums[i] target 且 abs(i - start) 最小化 。注意:abs(x) 表示 x 的绝对值。…

【机器学习】sklearn数据集获取、分割、分类和回归

sklearn数据集1、数据集划分1.1 获取数据1.2 获取数据返回的类型举个栗子:1.3 对数据集进行分割举个栗子:2、 sklearn分类数据集3、 sklearn回归数据集1、数据集划分 机器学习一般的数据集会划分为两个部分: 训练数据:用于训练&a…

LeetCode 1846. 减小和重新排列数组后的最大元素

文章目录1. 题目2. 解题1. 题目 给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件: arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 ,也就是…

ftp可以传输什么类型文件_FTP文件传输工具-ForkLift for Mac

orklift mac版是一款运行在Mac平台上的FTP文件传输工具。ForkLift拥有经典的两栏界面布局,简洁小巧。且支持FTP,SFTP,WebDAV,S3,iDisk,SMB,AFP和NIS协议,可以方便用户对本地以及远程…

1过程流程图 3 apqp_为什么过程开发的平面布置图要遵循精益原则?

今日话题为什么过程开发的平面布置图要遵循精益原则?问为什么过程开发的平面布置图要遵循精益原则?答工艺工程师根据过程流程图制定平面布置图,采用精益制造的原则,对加工与装配工位、物流路线、存储位置进行规划,以确…

LeetCode 1847. 最近的房间(排序离线计算 + 二分查找)

文章目录1. 题目2. 解题1. 题目 一个酒店里有 n 个房间,这些房间用二维整数数组 rooms 表示,其中 rooms[i] [roomIdi, sizei] 表示有一个房间号为 roomIdi 的房间且它的面积为 sizei 。每一个房间号 roomIdi 保证是 独一无二 的。 同时给你 k 个查询&…

【机器学习】sklearn k-近邻算法

sklearn k-近邻算法1. sklearn k-近邻算法API2. k近邻算法实例-预测入住位置核心思想:你的“邻居”来推断出你的类别定义:如果一个样本在特征空间中的 k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。…

LeetCode 1849. 将字符串拆分为递减的连续值(回溯)

文章目录1. 题目2. 解题1. 题目 给你一个仅由数字组成的字符串 s 。 请你判断能否将 s 拆分成两个或者多个 非空子 字符串 ,使子字符串的 数值 按 降序 排列,且每两个 相邻子字符串 的数值之 差 等于 1 。 例如,字符串 s "0090089&q…

flutter text 最大长度_Flutter小技巧之TextField换行自适应

无论哪种界面框架输入文本框都是非常重要的控件, 但是发现flutter中的输入框TextField介绍的虽然多,但是各个属性怎么组合满足需要很多文章却说不清楚, 再加上控件版本变更频繁很多功能的介绍都是比较陈旧的属性.现在就需要一个类似微信的输入文本框, 这样一个非常实用的效果fl…

【机器学习】分类算法sklearn-朴素贝叶斯算法

分类算法-朴素贝叶斯算法1. 概率基础2. 朴素贝叶斯介绍3. sklearn朴素贝叶斯实现API4. 朴素贝叶斯算法案例1. 概率基础 概率定义为一件事情发生的可能性:扔出一个硬币,结果头像朝上;某天是晴天 联合概率和条件概率“”: 联合概率…

LeetCode 1851. 包含每个查询的最小区间(排序 + 离线查询 + 优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 intervals ,其中 intervals[i] [lefti, righti] 表示第 i 个区间开始于 lefti 、结束于 righti(包含两侧取值,闭区间)。 区间的 长度 定义为区间中包含的整数数目&#xff…

git 查看某些文档的历史版本_Git 教程(二)log 命令的使用

使用 Git 进行版本控制时,要习惯他的工作流程,Git 的工作流程是,先在工作区创建项目并编写代码,然后将写好的文件添加到暂存区,最后将暂存区里的文件提交到历史版本库。如下图所示:每向版本历史库做一次提交…

【机器学习】sclearn分类算法-决策树、随机森林

分类算法-决策树、随机森林1.决策树1.1 认识决策树1.2 信息论基础-银行贷款分析1.3 决策树的生成1.4 决策树的划分依据之一-信息增益1.5 sklearn决策树API1.6 泰坦尼克号乘客生存分类2. 集成学习方法-随机森林1.决策树 1.1 认识决策树 决策树思想的来源非常朴素,程…

【机器学习】回归算法-线性回归分析、回归实例和回归性能评估

回归算法-线性回归分析、回归实例和回归性能评估线性回归损失函数(误差大小)sklearn线性回归正规方程、梯度下降API线性回归实例回归:目标值连续;分类:目标值离散。 预测回归和分类是不一样的。回归问题可以用于预测销售额,比如公…

scrapy使用代理报错keyerror: proxy_爬虫Scrapy框架-Crawlspider链接提取器与规则解析器...

Crawlspider一:Crawlspider简介CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能。其中最显著的功能就是”LinkExtractors链接提取器“。Spider是所有爬虫的基类,其…

传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...

模板名称:(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,创意设计、装饰设计、餐饮酒店设计…

【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测

逻辑回归—良/恶性乳腺癌肿瘤预测 逻辑回归的损失函数、优化 与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解 sklearn逻辑回归API sklearn.linear_model.LogisticRegressionLogisticRegression sklearn.linear…

opencv mat初始化_【OpenCV入门之十二】看起来一样的图像竟然存在这么大的差别!...

小白导读学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了【OpenCV入门】系列。新的一年文章的内容进行了很大的完善,主要是借鉴了更多大神的文章,希望让小伙伴更加容易理解。如果小伙伴觉…