前言:博主接触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. Angular版本1.2.4在IE11的IE8模式下出错解决方案

    今天,群里一个兄弟抛出一个问题(如上),截图说明. 打断点调试下,貌似是console里面的log方法出错了,如下: 这个是console的log方法,为什么错呢,继续: 我们会发现,在这里是检测fu ...

  2. 菜单(Menu)的三中创建方式——Android开发之路2

    菜单的三种创建方式 一.OptionsMenu---选项菜单 Android应用中的菜单默认是隐藏的,只有当用户点击手机上的MENU键,系统才会显示菜单.这种菜单叫做选项菜单(Options Menu ...

  3. [Erlang 0125] Know a little Erlang opcode

    Erlang源代码编译为beam文件,代码要经过一系列的过程(见下面的简图),Core Erlang之前已经简单介绍过了Core Erlang,代码转换为Core Erlang,就容易拨开一些语法糖的 ...

  4. 自动将指定目录下面的文件转换为UTF-8

    using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...

  5. Windows Server 2012 虚拟化实战:存储(二)

    五.搭建Window Server 2012虚拟化的存储网络 前文我们讨论了Window Server 2012支持的各种与存储相关的技术,接下来我们通过实践对其中的一些技术进行检验.实际上Windo ...

  6. APUE学习之出错处理

         当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值.        errno是全局变量,仅当函数出错才有被改变.对待errno,应注意两条规则 ...

  7. WPF 自定义列表筛选 自定义TreeView模板 自定义ListBox模板

    有很多项目,都有数据筛选的操作.下面提供一个案例,给大家做参考. 左侧是数据源,搜索框加TreeView控件,右侧是ListBox控件.在左侧数据列点击添加数据,然后点击确定,得到所筛选的数据. 下面 ...

  8. Ubuntu 15.1 unity在顶部面板显示系统CPU/内存/网络速度

    全部的文件:http://files.cnblogs.com/files/xiaobo-Linux/ubuntu%E6%98%BE%E7%A4%BA%E7%B3%BB%E7%BB%9F%E7%BD%9 ...

  9. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  10. 如何将网页的title前面的图标替换成自己的图标

    首先要准备自己的图标,图标必须是.ico格式的图片,网上有很多在线工具可以将自己的图片转换成ico格式的图片,这里给大家介绍两个网站 在线ico转换工具:生成的图标是可以选尺寸的,原图片的大小不限制 ...