iOS之UIKit系列教程<一>

时间:2023-01-29 16:28:40

前言:博主接触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 =

右图为模拟器效果图iOS之UIKit系列教程<一>

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