iOS之UIKit系列教程<一>
前言:博主接触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系列教程<一>的更多相关文章
- iOS 9 适配系列教程
http://www.cocoachina.com/ios/20150703/12392.html 本文是投稿文章,作者:ChenYilong(https://github.com/ChenYilon ...
- iOS 9适配系列教程:后台定位
http://www.cocoachina.com/ios/20150624/12200.html Demo:GitHub地址 [iOS9在定位的问题上,有一个坏消息一个好消息]坏消息:如果不适配iO ...
- 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信
http://blog.csdn.net/xiaominghimi/article/details/51586492 一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解R ...
- iOS Core Animation 简明系列教程
iOS Core Animation 简明系列教程 看到无数的CA教程,都非常的难懂,各种事务各种图层关系看的人头大.自己就想用通俗的语言翻译给大家听,尽可能准确表达,如果哪里有问题,请您指出我会尽 ...
- iOS 微信消息拦截插件系列教程-(总目录)
微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 1 ...
- iOS 微信消息拦截插件系列教程-附录(服务端成果展示)
微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 服 ...
- (翻译)开始iOS 7中自动布局教程(二)
这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学 ...
- iOS开发 ReactiveCocoa入门教程 第一部分
作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation).但是这些事件都用不同的方式来处理 ...
- 【原】iOSCoreAnimation动画系列教程(二):CAKeyFrameAnimation【包会】
在上一篇专题文章[原]iOSCoreAnimation动画系列教程(一):CABasicAnimation[包会]中我们学习了iOS核心动画CoreAnimation中CABasicAnimation ...
随机推荐
- Andriod 自定义控件之创建可以复用的组合控件
前面已学习了一种自定义控件的实现,是Andriod 自定义控件之音频条,还没学习的同学可以学习下,学习了的同学也要去温习下,一定要自己完全的掌握了,再继续学习,贪多嚼不烂可不是好的学习方法,我们争取学 ...
- sublime 相关配置
安转插件:案例格式化HTML代码,需要安装插件,具体安装步骤如下: 1.打开菜单->首选项->插件控制,输入 install package 2.等待程序进入插件管理功能,再输入插件名称: ...
- MySQL同步常见问题解答(自己的小心得)
前几天刚刚注册了博客园,我想写一些技巧性的教程,今天给大家分享一个MySQL同步常见问题解答. Q:如果主服务器正在运行并且不想停止主服务器,怎样配置一个从服务器? A:有多种方法.如果你在某时间点做 ...
- WPF CheckBox样式 ScrollViewer样式 WrapPanel、StackPanel、Grid布局
本节讲述布局,顺带加点样式给大家看看~单纯学布局,肯定是枯燥的~哈哈 那如上界面,该如何设计呢? 1.一些布局元素经常用到.Grid StackPanel Canvas WrapPanel等.如上这种 ...
- (转)NIO与AIO,同步/异步,阻塞/非阻塞
原文地址: http://www.cnblogs.com/enjoy-ourselves/p/3793771.html 1.flip(),compact(),与clear()的使用 flip()内部实 ...
- BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 [treap hash]
1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1318 Solved: 498[Submit][ ...
- [No00009C]Visual Studio在 解决方案资源管理器 里同步定位打开的文件
标题的意思就是在使用VS的时候,需要我们打开编辑的文件跟解决方案的资源管理器同步显示,这样方便定位到我们在修改哪个文件. 设置如下: 工具——选项——项目和解决方案——在解决方案资源管理器中跟踪活动项 ...
- 东软HIS切换输入法卡死的解决方法
在文字选项的第二页上,勾选上边的相容性设定,然后重启电脑:
- ESLint规则配置说明
"no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 & ...
- Nginx模块之http.md
ngx_http_access_module ngx_http_access_module模块允许限制对某些客户端地址的访问. 访问也可以通过密码,子请求的结果或JWT来限制. 通过地址和密码的同时访 ...