前言:博主接触iOS的编程也有一段时间,今天把有关UI控件的一些知识在这里做一些总结。

申明:此系列文章都是使用目前最新版本swift3.0.1进行讲解的,与其他版本可能略有差异。

一,UIKit之设置圆角及阴影(对于lable和button这两个简单控件就不介绍了)

 let imageView = UIImageView(frame: CGRect(x: , y: , width: , height: ))
imageView.backgroundColor = UIColor.brown self.view.addSubview(imageView) //设置圆角
imageView.layer.masksToBounds = true
//设置圆角弧度(值越大,越圆)
imageView.layer.cornerRadius =
//设置边框
imageView.layer.borderWidth = 2.3
imageView.layer.borderColor = UIColor.red.cgColor
//设置阴影
imageView.layer.shadowOffset = CGSize(width: ,height: )
imageView.layer.shadowColor = UIColor.blue.cgColor
imageView.layer.shadowOpacity =

问题来了:设置圆角和阴影都没什么难度,如果是要设置一个元素即设置圆角又设置阴影可并不是想象中这么简单。

 //设置阴影同时设置圆角及边框发现传统方式无效
//因为setMasksToBounds表示对frame外的内容进行了裁减,只可显示frame内的内容。由于这种方法加的阴影在frame外,所以被裁减了。(Google结果,其实我也不懂这个解释)
let imageView2 = UIImageView(frame: CGRect(x: , y: , width: , height: ))
imageView2.backgroundColor = UIColor.brown self.view.addSubview(imageView2) //设置圆角
//将此行注释即可//imageView2.layer.masksToBounds = true
//设置圆角弧度(值越大,越圆)
imageView2.layer.cornerRadius =
//设置边框
imageView2.layer.borderWidth = 2.3
imageView2.layer.borderColor = UIColor.red.cgColor
//设置阴影
imageView2.layer.shadowOffset = CGSize(width: ,height: )
imageView2.layer.shadowColor = UIColor.blue.cgColor
imageView2.layer.shadowOpacity =

右图为模拟器效果图

二,UIKit之UIImageView

 //创建imageView对象并设定大小以及位置
let imageView:UIImageView = UIImageView(frame: CGRect(x: , y: , width: , height: )) // //给imageView对象设置图片
// imageView.image = UIImage(named: "no1.jpg")
// //设置imageView的背景颜色
// imageView.backgroundColor = UIColor.blue
// imageView.highlightedImage = UIImage(named: "no2.jpg")
// imageView.isHighlighted = true
self.view.addSubview(imageView) //设置动画效果
//设置图片数组
var imgArr:Array<UIImage?> = Array()
let img1:UIImage? = UIImage(named: "no1.jpg")
let img2:UIImage? = UIImage(named: "no2.jpg")
imgArr.append(img1)
imgArr.append(img2)
print(imgArr.count)
imageView.animationImages = imgArr as? [UIImage]
//设置动画重复次数
imageView.animationRepeatCount =
//设置一次动画执行时间
imageView.animationDuration =
//启动动画
imageView.startAnimating()

三,UIKit之搜索框

1.搜索框属性设置

         //设置搜索框上的默认提示语
searchBar.placeholder = "请输入关键字" //设置搜索框上显示的默认文字
searchBar.text = "swift"
//设置搜索框风格
//searchBar.barStyle = UIBarStyle.blackOpaque
//设置搜索框背景文字
searchBar.prompt = "背景文字"
//设置相应功能按钮的显示与否
searchBar.showsCancelButton = true
searchBar.showsBookmarkButton = true
searchBar.showsSearchResultsButton = true
//设置游标以及相关渲染颜色
searchBar.tintColor = UIColor.blue
//searchBar.barTintColor = UIColor.brown
//设置搜索框附件视图
searchBar.scopeButtonTitles = ["新闻","军事","娱乐","游戏"]
//设置搜索框视图是否可见
searchBar.showsScopeBar = true
//设置代理(必须实现UISearchBarDelegate协议)
searchBar.delegate = self self.view.addSubview(searchBar)

2,搜索框回调函数

 //设置搜索框是否获得焦点事件
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//设置小键盘收放
searchBar.resignFirstResponder()
} //设置点击附件视图代理方法的回调
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
print(selectedScope)//selectedScope所点击的附件标识
} //设置图书按钮点击后的回调方法
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) {
print("searchBarBookmarkButtonClicked")
} //设置取消按钮点击后的回调方法
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
print("searchBarCancelButtonClicked")
} //设置搜索按钮点击后的回调方法(此方法在小键盘收起时,按钮默认不可用)
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
print("searchBarSearchButtonClicked")
} //设置搜索结果按钮点击后的回调方法
func searchBarResultsListButtonClicked(_ searchBar: UISearchBar) {
print("searchBarResultsListButtonClicked")
} //设置搜索框进入编辑方法,若return false将无法进入编辑
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
return true
} //设置搜索框退出编辑方法,若return false将无法退出编辑
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
return true
} //设置搜索框已经进入编辑状态的回调方法
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
print("已经进入编辑状态")
} //设置搜索框已经退出编辑状态的回调方法
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
print("已经退出编辑状态")
} //输入框文字变化时调用的方法
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//print(searchText)(当使用键盘输入时,每输入一个字符便会输出此时搜索框的文字,若是粘贴一个字符串同理)
} //检测用户输入文字
func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
print(text)//(当使用键盘输入时,每输入一个字符便会输出这个字符,若是粘贴一个字符串则会输出这个字符串)
return true
}

四,UIKit之开关控件

         let mySwitch:UISwitch = UISwitch(frame: CGRect(x: , y: ,  width: , height: ))

         //设置滑块颜色
mySwitch.thumbTintColor = UIColor.blue //设置开关开启颜色
mySwitch.onTintColor = UIColor.black //设置开关关闭颜色
mySwitch.tintColor = UIColor.brown //设置开关被使用的事件
//Selector参数可以通过#selector(方法名)这种方式调用一个方法
mySwitch.addTarget(self, action: #selector(self.switchClick(sw:)), for: UIControlEvents.valueChanged) self.view.addSubview(mySwitch)
} func switchClick(sw:UISwitch){
if sw.isOn{
self.view.backgroundColor = UIColor.white
}else{
self.view.backgroundColor = UIColor.darkGray
}
}

小结:1,在iOS中的控件其实与HTML中的元素有一定的相似之处,而在iOS中一个个标签的样式则是封装在一个个的对象之中。

2,在iOS的控件中大多有一些默认的样式,并且这些样式的交互性还是挺不错的,可以减少我们的开发周期。

3,大多标签有着相同的方法,例如标签是否可用isEnabled方法几乎所有的控件可用。

4,控件有哪些属性以及方法都可以通过查看该控件源码或是其父类或是自己的扩展类中知道,并不需要刻意的去强记。

iOS之UIKit系列教程<一>的更多相关文章

  1. iOS 9 适配系列教程

    http://www.cocoachina.com/ios/20150703/12392.html 本文是投稿文章,作者:ChenYilong(https://github.com/ChenYilon ...

  2. iOS 9适配系列教程:后台定位

    http://www.cocoachina.com/ios/20150624/12200.html Demo:GitHub地址 [iOS9在定位的问题上,有一个坏消息一个好消息]坏消息:如果不适配iO ...

  3. 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

    http://blog.csdn.net/xiaominghimi/article/details/51586492 一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解R ...

  4. iOS Core Animation 简明系列教程

    iOS Core Animation 简明系列教程  看到无数的CA教程,都非常的难懂,各种事务各种图层关系看的人头大.自己就想用通俗的语言翻译给大家听,尽可能准确表达,如果哪里有问题,请您指出我会尽 ...

  5. iOS 微信消息拦截插件系列教程-(总目录)

    微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 1 ...

  6. iOS 微信消息拦截插件系列教程-附录(服务端成果展示)

    微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 服 ...

  7. (翻译)开始iOS 7中自动布局教程(二)

    这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学 ...

  8. iOS开发 ReactiveCocoa入门教程 第一部分

    作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation).但是这些事件都用不同的方式来处理 ...

  9. 【原】iOSCoreAnimation动画系列教程(二):CAKeyFrameAnimation【包会】

    在上一篇专题文章[原]iOSCoreAnimation动画系列教程(一):CABasicAnimation[包会]中我们学习了iOS核心动画CoreAnimation中CABasicAnimation ...

随机推荐

  1. MS SQL巡检系列——检查重复索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  2. count(*) 与count (字段名)的区别

    count(*) 查出来的是:结果集的总条数 count(字段名) 查出来的是: 结果集中'字段名'不为空的记录的总条数

  3. 极路由2(极贰)ROOT并刷了OpenWrt

    绕过官方的ROOT 查了一下root教程, 如果还需要保留保修, 则需要自己想办法回退版本, 下载搜狐插件到sd卡, 找个linux系统修改sd卡上程序的执行权限, 然后才能开启ssh, 具体的方法可 ...

  4. bash/shell编程学习(3)

    接上节继续, 1. 从键盘读取输入内容 #!/bin/bash read -p 'please input something:' input echo 'your input:' $input 运行 ...

  5. SQL Server数据库设计规范

    数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的 ...

  6. 【Mysql】 局域网远程连接问题

    设置了 user 表 的 host为‘%’ 为什么局域网还是连接不上: 新建查询-->分别执行 1.GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTI ...

  7. 【WPF】新复制wpf项目报错

    错误提示:Program does not contain a static 'Main' method suitable for an entry point 1.App.xaml 文件属性:生成操 ...

  8. CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

  9. 关于SQL注入和如何防止

    之前在笔试的时候没有很好的答出这个问题,因此我要总结一下问题,以免日后继续在这个地方跌倒,以下是自己的理解,如有错误请指出 一.什么是SQL注入 SQL注入就是服务器在根据业务去处理数据库的时候,客户 ...

  10. Power BI REST API

    Overview of Power BI REST API https://msdn.microsoft.com/en-us/library/dn877544.aspx 验证方式 OAuth 2.0 ...