UI階段第二天

一臉懵逼的我

UIView父子視圖

還是通過代碼來理解吧:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
       
        //1.創(chuàng)建一個UIView對象
        let redView = UIView.init(frame: CGRectMake(100, 100, 200, 200))
        //2.設置背景顏色
        redView.backgroundColor = UIColor.redColor()
        
        //3.添加到界面上
        //self.view就是redView的父視圖,redView就是self.view的子視圖
        self.view.addSubview(redView)
        
        //4.設置tag值,默認都是0.設tag值的時候值必須要大于0
        //tag的作用是用來區(qū)分界面上不同的視圖
        redView.tag = 100
        
        //MARK: - 父子視圖的特點和方法
        //再創(chuàng)建一個黃色視圖
        let yellowView = UIView.init(frame: CGRectMake(0, 0, 50, 50))
        yellowView.backgroundColor = UIColor.yellowColor()
        yellowView.tag = 101
        
        //1.一個視圖只有一個父視圖糜颠,可以有多個子視圖
        //連續(xù)將同一個視圖添加到兩個視圖上汹族,最后一次添加有效
        redView.addSubview(yellowView)
        self.view.addSubview(yellowView)
        
        //2.獲取一個視圖的父視圖
        let superView = redView.superview
        superView?.backgroundColor = UIColor.greenColor()
        
        //3.獲取一個視圖的所有的子視圖
        let subViews = self.view.subviews
        //拿到所有的子視圖中的紅色視圖和黃色視圖
        //a.
        for item in subViews {
            
            //判斷item是否是UILabel類型的。如果是就返回true,如果不是就返回false
            if item.isKindOfClass(UILabel.self) {
                print(item)
            }
        }
        //b.
        for item in subViews {
            
            if item.tag == 100 {
                print("紅色視圖")
                //將紅色視圖的背景顏色變成橙色
                item.backgroundColor = UIColor.orangeColor()
            }
            
            if item.tag == 101 {
                
                print("黃色視圖\(item)")
            }
        }
        
        //4.通過tag值拿到指定的子視圖
        let subView2 = self.view.viewWithTag(101)
        subView2?.frame.origin.y = 100
        
    }
}

視圖的層次關系

代碼示例:

mport UIKit

class ViewController: UIViewController {

    //MARK: - 生命周期方法
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.creatUI()
    }
    
    //MARK: - 創(chuàng)建界面
    func creatUI() {
        
        //結論:在一個視圖上忌警,添加多個子視圖的時候箕速,子視圖之間如果有公共的部分字柠。那么后添加的子視圖會覆蓋先添加的
        //1.一般情況下,如果想要將一個視圖顯示在最下面常柄,就最先添加哨颂。想要顯示在最上面就最后添加
        //創(chuàng)建視圖
        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)
    }
    
    //創(chuàng)建視圖
    func creatView(frame:CGRect,backColor:UIColor)->UIView {
        //創(chuàng)建視圖對象
        let subView = UIView.init(frame: frame)
        //設置背景顏色
        subView.backgroundColor = backColor
        //添加到界面上
        self.view.addSubview(subView)
        //將創(chuàng)建的視圖返回
        return subView
    }

}

UIView動畫

代碼示例:

import UIKit

class ViewController: UIViewController {

    //MARK: - 屬性
    let subView = UIView()
    let subView2: UIView? = nil
    
    //MARK: - 生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //創(chuàng)建視圖
        subView.frame = CGRectMake(0, 0, 100, 100)
        subView.center = self.view.center
        subView.backgroundColor = UIColor.greenColor()
        self.view.addSubview(subView)
        
        
        //切圓角
        self.layerAction()
        
        //使用動畫
        self.UIViewAnimation4()
    }
    
    //MARK: - Layer屬性
    func layerAction() {
        //layer屬性是負責視圖的形狀(顯示)
        
        //1.切圓角
        //當圓角的值為正方形的寬的一半附迷,就可以切一個圓
        self.subView.layer.cornerRadius = 50
        
        //2.設置邊框
        self.subView.layer.borderWidth = 3
        self.subView.layer.borderColor = UIColor.redColor().CGColor
        
        
    }
    
    
    
    //MARK: - 動畫方法
    //UIView的動畫使用來動畫的改變視圖的frame相關屬性买喧、背景顏色瞬项、透明度
    
    
    //方法4:
    func UIViewAnimation4() {
        
        //參數(shù)1:動畫時間
        //參數(shù)2:延遲時間
        //參數(shù)3:彈簧的壓力系數(shù)
        //參數(shù)4:彈簧初始的加速度
        //參數(shù)5:選項
        //參數(shù)6:設置動畫結束時視圖的狀態(tài)
        //參數(shù)7:動畫結束后要執(zhí)行的閉包
        UIView.animateWithDuration(2, delay: 1, usingSpringWithDamping: 0.1, initialSpringVelocity: 0, options: [ .Repeat, .Autoreverse], animations: {
            
            //注意:對于有圓角的視圖,改變大小而又不影響形狀候齿,只能通過形變去縮放周霉。不能直接改變frame中的size
                self.subView.transform = CGAffineTransformMakeScale(0.5, 0.5)
            
            }, completion: nil)
    }
    
    
    
    //方法3:
    func UIViewAnimation3() {
        
        //參數(shù)1:動畫時間
        //參數(shù)2:延遲時間
        //參數(shù)3:選項,Repeat->動畫重復執(zhí)行,Autoreverse->自動回到動畫開始的狀態(tài)
        //參數(shù)4:設置動畫結束時視圖狀態(tài)的閉包
        //參數(shù)5:整個動畫過程完成后需要執(zhí)行的閉包
        UIView.animateWithDuration(2, delay: 1, options: [ .Repeat, .Autoreverse], animations: {
            
                self.subView.transform = CGAffineTransformMakeTranslation(0, -200)
            
            }, completion: nil)
    }
    
    
    //方法2:
    func UIViewAnimation2(){
        
        //參數(shù)3:整個動畫完成后會自動調用這個閉包
        UIView.animateWithDuration(2, animations: { 
            
                self.subView.transform = CGAffineTransformMakeTranslation(0, -200)
            
            }) { (_) in
                
                //寫動畫結束后需要執(zhí)行的代碼
                UIView.animateWithDuration(2, animations: { 
                    self.subView.transform = CGAffineTransformMakeTranslation(0, 0)
                })
                
        }
        
    }
    
    //方法1:
    func UIViewAnimation1() {
        
        //功能:執(zhí)行這個方法前視圖的狀態(tài),動畫的切換到閉包里面設置的最終狀態(tài)
        //參數(shù)1:動畫時間(單位:秒)
        //參數(shù)2:閉包食寡,設置動畫結束時視圖的狀態(tài)
        UIView.animateWithDuration(2) {
            
            //在這兒來設置視圖動畫結束時的狀態(tài)
            //a.動畫的改變視圖的坐標
            self.subView.frame.origin.y = 50
            
            //b.動畫的改變視圖的大小
            //self.subView.frame.size = CGSizeMake(50, 50)
            self.subView.transform = CGAffineTransformMakeScale(0.5, 0.5)
            
            //c.動畫的改變視圖的背景顏色
            self.subView.backgroundColor = UIColor.redColor()
            
            //d.動畫的改變視圖的透明度(0~1)
            self.subView.alpha = 0.3
            
        }

    }
    
}

UILabel基礎

代碼示例:

import UIKit

class ViewController: UIViewController {

    //MARK: - 生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.creatLabel()
    }

    //MARK: - 創(chuàng)建Label
    func creatLabel() {
        
        //UILabel:UIView -> UIView的屬性和方法伤为,UILabel都擁有
        //=======從UIView繼承下來的屬性=======
        //1.創(chuàng)建UILabel對象
        let label = UILabel.init(frame: CGRectMake(100, 100, 200, 300))
        //2.添加到界面上
        self.view.addSubview(label)
        //3.設置背景顏色
        label.backgroundColor = UIColor.yellowColor()
        
        //========UILabel的專有屬性=========
        //1.text屬性
        //設置label上顯示的文字
        label.text = "hello world 你好世界"
        //拿到label上當前顯示的文字
        print(label.text)
        
        //2.設置字體(字體大小默認是:17)
        //使用系統(tǒng)字體,設置字體大小
        label.font = UIFont.systemFontOfSize(17)
        
        //使用系統(tǒng)字體僚祷,設置字體大小和粗細
        //參數(shù)1:字體大小
        //參數(shù)2:字體粗細(小于1)
        label.font = UIFont.systemFontOfSize(17, weight: 0.2)
        
        //使用系統(tǒng)黑體奸绷,設置字體大小
        label.font = UIFont.boldSystemFontOfSize(17)
        
        //使用系統(tǒng)斜體憨愉,設置字體大小
        label.font = UIFont.italicSystemFontOfSize(17)
        
        //獲取系統(tǒng)所有字體的字體名
        //75
        print(UIFont.familyNames(),UIFont.familyNames().count)
        //參數(shù)1:字體名
        //參數(shù)2:字體大小
        label.font = UIFont.init(name: "FZJKai-Z03S", size: 17)
        
        //總結使用自己的字體的步驟:
        //1.將ttf文件拖到工程中
        //2.在info.plist文件中添加鍵值對"Fonts provided by application",將字體添加到系統(tǒng)字體庫中
        //3.通過提供字體名的構造方法去創(chuàng)建字體(先要找到自己添加的字體的字體名)
        
        //3.設置文字顏色
        label.textColor = UIColor.redColor()
        
        //4.設置陰影顏色
        label.shadowColor = UIColor.blackColor()
        //5.設置陰影的偏移效果
        label.shadowOffset = CGSizeMake(-1, -1)
        
        //6.設置文字的對齊模式(默認是左對齊)
        //Center -> 居中
        //Right -> 右對齊
        //Left -> 左對齊
        label.textAlignment = .Left
        
        
        label.text = "default is NSLineBreakBy TruncatingTail used for single and multiple lines of text 這樣就用代碼實現(xiàn)了label的創(chuàng)建贷笛,其中initWithFrame設置了label的位置還有大小革娄,奧斯卡的積分換空間和"
        
        //7.設置行數(shù)
        label.numberOfLines = 5
        //自動換行
        label.numberOfLines = 0
        
        //8.設置換行模式
        //ByWordWrapping -> 以單詞為單位換行
        //ByCharWrapping -> 以字符為單位換行
        //...
        label.lineBreakMode = .ByCharWrapping
        
    }

}

根據(jù)文字設置label的大小

代碼示例:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    
        //需要顯示在label上的文字
        let str = "收到回復asdfsajfdkl刷卡費上"
        
        //計算顯示指定文字所需要的最小空間
        //1.將swift的字符串轉換成OC的字符串
        let ocStr = str as NSString
        //2.計算字符串的大小
        //參數(shù)1:限制顯示當前字符串的最大寬度和最大高度
        //參數(shù)2:設置渲染方式(UsesLineFragmentOrigin)
        //參數(shù)3:確定文字的字體(大小)
        //NSFontAttributeName ->字體對應的key值
        //NSForegroundColorAttributeName -> 文字顏色對應的key值
         let strSize = ocStr.boundingRectWithSize(CGSizeMake(100, 1000000000), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(17)], context: nil).size
        print(strSize)
        
        
        //3.創(chuàng)建label顯示文字
        let label = UILabel.init(frame: CGRectMake(100, 100, strSize.width, strSize.height))
        label.backgroundColor = UIColor.yellowColor()
        self.view.addSubview(label)
        label.text = str
        //自動換行
        label.numberOfLines = 0
        
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末了罪,一起剝皮案震驚了整個濱河市娃圆,隨后出現(xiàn)的幾起案子谦炬,更是在濱河造成了極大的恐慌悦屏,老刑警劉巖节沦,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異础爬,居然都是意外死亡甫贯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門看蚜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叫搁,“玉大人,你說我怎么就攤上這事失乾〕N酰” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵碱茁,是天一觀的道長裸卫。 經(jīng)常有香客問我,道長纽竣,這世上最難降的妖魔是什么墓贿? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蜓氨,結果婚禮上聋袋,老公的妹妹穿的比我還像新娘。我一直安慰自己穴吹,他們只是感情好幽勒,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著港令,像睡著了一般啥容。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顷霹,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天咪惠,我揣著相機與錄音,去河邊找鬼淋淀。 笑死遥昧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的朵纷。 我是一名探鬼主播炭臭,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袍辞!你這毒婦竟也來了鞋仍?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤革屠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體似芝,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡那婉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了党瓮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片详炬。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寞奸,靈堂內的尸體忽然破棺而出呛谜,到底是詐尸還是另有隱情,我是刑警寧澤枪萄,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布隐岛,位于F島的核電站,受9級特大地震影響瓷翻,放射性物質發(fā)生泄漏聚凹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一齐帚、第九天 我趴在偏房一處隱蔽的房頂上張望妒牙。 院中可真熱鬧,春花似錦对妄、人聲如沸湘今。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摩瞎。三九已至,卻和暖如春琅豆,著一層夾襖步出監(jiān)牢的瞬間愉豺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工茫因, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚪拦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓冻押,卻偏偏與公主長得像驰贷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洛巢,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫括袒、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,107評論 4 62
  • 今天與董事長和老總在一起聊了公司得現(xiàn)狀和必須面對得問題稿茉,也給了我一些彈性處理問題的方式方法锹锰,確實對我本身有很大的啟...
    oilyne閱讀 802評論 0 2
  • 沖著淘點點上8.8的評分和“黑馬”兩字,果斷買票去看痢士。 個人覺得電影評分低不代表電影本身不好彪薛,當然高自然是有它的好...
    蕭靖男閱讀 1,436評論 7 13
  • 表格標簽:table 表格thead 表格頭tbody 表格主體tr 表格行th 元素定義表頭td 元素定義表格單...
    奶瓶SAMA閱讀 154評論 0 0