UIView父子视图
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//a.创建一个UIVIEW对象
let redView = UIView.init(frame:CGRectMake(100, 100, 100, 100))
//b.设置背景颜色
redView.backgroundColor = UIColor.redColor()
//c.添加到界面上
//self.view是redview的父视图,redview就是self.view的子视图
self.view.addSubview(redView)
//d.设置tag值,默认都是0.设置tag值得时候值必须要大于0
//用来区分界面上不同的视图
redView.tag = 100
//Mark:-父子视图的特点和方法
//1.一个视图只有一个父视图,可以有多个子视图
//连续将同一个视图添加到两个视图上,最后一次添加有效
//在创建一个黄色视图
let yellowView = UIView.init(frame:CGRectMake(0, 0, 50, 50))
yellowView.backgroundColor = UIColor.yellowColor()
redView.addSubview(yellowView)
self.view.addSubview(yellowView)
yellowView.tag = 101
//2.获取一个视图的父视图
let superView = redView.superview
print(superView)
superView?.backgroundColor = UIColor.greenColor()
//3.获取一个视图所有的子视图
let subViews = self.view.subviews
print(subViews)
//拿到所有的子视图中的红色视图和黄色视图
//第一种
for item in subViews {
//判断item是否是UIView类型。如果是返回true,如果不是返回fasle
if item.isKindOfClass(UIView.self) {
print(item)
}
}
//第二种
for item in subViews {
if item.tag == 100{
print("红色视图")
item.backgroundColor = UIColor.orangeColor()
}
if item.tag == 101{
print("黄色视图")
}
}
//4.通过tag值拿到指定的子视图
let subView2 = self.view.viewWithTag(101)
subView2?.frame.origin.y = 100
}
}
视图的层次关系
class ViewController: UIViewController {
//MARK:-生命周期方法
override func viewDidLoad() {
super.viewDidLoad()
self.creatUI()
}
//MARK: - 创建界面
func creatUI(){
//结论:
//在一个视图上,添加多个子视图的时候,子视图之间有公共的部分,那么后添加的子视图会覆盖先添加的
//一般情况下,如果想要将一个子视图显示在最下面,就最先添加,想要显示在最上面就最后添加
//创建视图
let view1 = self.creatView(CGRectMake(50, 100, 100, 100), backColor: UIColor.yellowColor())
let view2 = self.creatView(CGRectMake(100, 150, 100, 100), backColor: UIColor.redColor())
let view3 = self.creatView(CGRectMake(150, 200, 100, 100), backColor: UIColor.greenColor())
let view4 = self.creatView(CGRectMake(180, 130, 100, 100), backColor: UIColor.purpleColor())
//2将指定的视图放在最上层
self.view.bringSubviewToFront(view2)
//3将指定的视图放在最下层
self.view.sendSubviewToBack(view2)
//4将指定的视图插入到另一个视图上面
self.view.insertSubview(view2, aboveSubview: view3)
//5将指定的视图插入到另一个视图下面
self.view.insertSubview(view2, belowSubview: view1)
}
//创建视图
func creatView(frame:CGRect,backColor:UIColor)->UIView{
//创建视图对象
let subView = UIView.init(frame:frame)
//设置背景色
subView.backgroundColor = backColor
//添加到界面上
self.view.addSubview(subView)
//将创建的视图对象返回
return subView
}
}
UIView动画
class ViewController: UIViewController {
//MARK:-生命周期方法
override func viewDidLoad() {
super.viewDidLoad()
self.creatUI()
}
//MARK: - 创建界面
func creatUI(){
//结论:
//在一个视图上,添加多个子视图的时候,子视图之间有公共的部分,那么后添加的子视图会覆盖先添加的
//一般情况下,如果想要将一个子视图显示在最下面,就最先添加,想要显示在最上面就最后添加
//创建视图
let view1 = self.creatView(CGRectMake(50, 100, 100, 100), backColor: UIColor.yellowColor())
let view2 = self.creatView(CGRectMake(100, 150, 100, 100), backColor: UIColor.redColor())
let view3 = self.creatView(CGRectMake(150, 200, 100, 100), backColor: UIColor.greenColor())
let view4 = self.creatView(CGRectMake(180, 130, 100, 100), backColor: UIColor.purpleColor())
//2将指定的视图放在最上层
self.view.bringSubviewToFront(view2)
//3将指定的视图放在最下层
self.view.sendSubviewToBack(view2)
//4将指定的视图插入到另一个视图上面
self.view.insertSubview(view2, aboveSubview: view3)
//5将指定的视图插入到另一个视图下面
self.view.insertSubview(view2, belowSubview: view1)
}
//创建视图
func creatView(frame:CGRect,backColor:UIColor)->UIView{
//创建视图对象
let subView = UIView.init(frame:frame)
//设置背景色
subView.backgroundColor = backColor
//添加到界面上
self.view.addSubview(subView)
//将创建的视图对象返回
return subView
}
}
UILabel
class ViewController: UIViewController {
//MARK:-生命周期
override func viewDidLoad() {
super.viewDidLoad()
self.creatLabel()
}
func creatLabel(){
//UILabel:UIView -> UIView的属性和方法,UILabel都拥有
//======从UIview继承下来的属性==============
//1.创建UILabel
let label = UILabel.init(frame: CGRectMake(100, 100, 200, 400))
//2,添加到界面上
self.view.addSubview(label)
//3.设置背景色
label.backgroundColor = UIColor.yellowColor()
//=========UILabel自己的属性================
label.text = "道,可道也,非恒道也。名,可名也,非恒名也。 “无”,名天地之始;“有”,名万物之母。 故,常“无”,欲以观其妙;常“有”,欲以观其徼。 此两者,同出而异名,同谓之玄。玄之又玄,眾妙之门。"
//拿到label上当前显示的文字
print(label.text)
//2.设置字体(默认17)
//设置系统字体,设置字体大小
//参数1字体大小
//参数2字体粗细(0-1)
label.font = UIFont.systemFontOfSize(25)
label.font = UIFont.systemFontOfSize(25, weight:0.5)
//使用粗体,设置大小
label.font = UIFont.boldSystemFontOfSize(17)
//使用斜体,设置字体大小
label.font = UIFont.italicSystemFontOfSize(17)
//获取系统所有字体的字体名
print(UIFont.familyNames())
//参数1:字体名
//参数2:字体大小
//"Zapfino","American Typewriter",HYZhuanShuF,FZJKai-Z03S
label.font = UIFont.init(name:"FZJKai-Z03S", size: 25)
//总结使用自己的字体步骤
//1将ttf文件拖到工程中
//2在info.plist文件中添加键值对"Fonts provided by application",将字体添加到系统字体库中
//3.通过提供字体名的构造方法创造字体(先要找到自己添加的字体的字体名)
//设置文字颜色
label.textColor = UIColor.greenColor()
//设置阴影颜色
label.shadowColor = UIColor.grayColor()
//设置阴影的偏移效果
label.shadowOffset = CGSizeMake(-1, 2)
//设置文字的对齐方式(默认是左对齐)
//center - 居中
//right - 右对齐
label.textAlignment = .Center
//7设置行数
label.numberOfLines = 10
//自动换行
label.numberOfLines = 0
//设置换行模式
//ByWordWrapping-以单词为单位换行
//ByCharWrapping-以字符为单位换行
label.lineBreakMode = .ByCharWrapping
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//需要显示在label上的文字
let str = " 唯之与阿,相去几何?美之与恶,相去若何?人之所畏,不可不畏。"
//计算显示指定文字所需的最小控件
//1.将SWIFT的字符串转换成OC的字符串
let ocStr = str as NSString
//参数1限制显示当前字符串的最大宽度和最大高度
//参数2设置渲染方式(UsesLineFragmentOrigin)
//参数3确定文字的字体大小
//NSFontAttributeName-字体对应的KEY值
//NSForegroundColorAttributeName-字体颜色对应的key值
//参数4
let strSize = ocStr.boundingRectWithSize(CGSizeMake(200, 40000000), options: .UsesLineFragmentOrigin, attributes:[NSFontAttributeName:UIFont.systemFontOfSize(17)], context: nil).size
print(strSize)
//3创建lebel显示文字
let label = UILabel.init(frame: CGRectMake(100, 100, strSize.width, strSize.height))
label.backgroundColor = UIColor.greenColor()
self.view.addSubview(label)
label.text = str
//自动换行
label.numberOfLines = 0
}
}