一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS應用中使用Auto Layout實現自定義cell及拖動回彈

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

2021-01-09 17:26JohnLui IOS

這篇文章主要介紹了iOS應用中使用Auto Layout實現自定義cell及拖動回彈的方法,自定義UITableViewCell并使用Auto Layout對其進行約束可以方便地針對多尺寸屏幕進行調整,代碼為Swift語言,需要的朋友可以參考下

自定義 cell 并使用 auto layout
創建文件
我們可以一次性創建 xib 文件和類的代碼文件。

新建 cocoa touch class:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

設置和下圖相同即可:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

檢查成果

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

分別選中上圖中的 1、2 兩處,檢查 3 處是否已經自動綁定為 firsttableviewcell,如果沒有綁定,請先檢查選中的元素確實是 2,然后手動綁定即可。

完成綁定工作
切換一頁,如下圖進行 identifier 設置:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

新建 table view controller 頁面
新建一個 table view controller 頁面,并把我們之前創建的 swift on ios 那個按鈕的點擊事件綁定過去,我們得到:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

然后創建一個名為 firsttableviewcontroller 的 uitableviewcontroller 類,創建流程跟前面基本一致。不要創建 xib。然后選中 storyboard 中的 table view controller(選中之后有藍色邊框包裹),在右側對它和 firsttableviewcontroller 類進行綁定:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

調用自定義 cell
修改 firsttableviewcontroller 類中的有效代碼如下:

復制代碼 代碼如下:


import uikit

 

class firsttableviewcontroller: uitableviewcontroller {

    override func viewdidload() {
        super.viewdidload()

        var nib = uinib(nibname: "firsttableviewcell", bundle: nil)
        self.tableview.registernib(nib, forcellreuseidentifier: "firsttableviewcell")
    }

    override func didreceivememorywarning() {
        super.didreceivememorywarning()
    }

    // mark: - table view data source

    override func numberofsectionsintableview(tableview: uitableview) -> int {
        return 1
    }

    override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int {
        return 10
    }

    override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell {
        let cell = tableview.dequeuereusablecellwithidentifier("firsttableviewcell", forindexpath: indexpath) as firsttableviewcell

        cell.textlabel?.text = indexpath.row.description

        return cell
    }
}


viewdidload() 中添加的兩行代碼是載入 xib 的操作。最下面的三個 func 分別是定義:

 

self.tableview 中有多少個 section
每個 section 中分別有多少個條目
實例化每個條目,提供內容
如果你得到以下頁面,說明你調用自定義 cell 成功了!

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

給自定義 cell 添加元素并使用 auto layout 約束
首先向 images.xcassets 中隨意加入一張圖片。

然后在左側文件樹中選中 firsttableviewcell.xib,從右側組件庫中拖進去一個 image view,并且在右側將其尺寸設置如下圖右側:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

給 imageview 添加約束:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

選中該 imageview(左箭頭所示),點擊自動 auto layout(右箭頭所示),即可。

給 imageview 設置圖片:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

再從右側組件庫中拖入一個 uilabel,吸附到最右側,垂直居中,為其添加自動約束,這一步不再贅述。

在 firsttableviewcell 類中綁定 xib 中拖進去的元素
選中 firsttableviewcell.xib,切換到雙視圖,直接進行拖動綁定:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

綁定完成!

約束 cell 的高度
在 firsttableviewcontroller 中添加以下方法:

復制代碼 代碼如下:

override func tableview(tableview: uitableview, heightforrowatindexpath indexpath: nsindexpath) -> cgfloat {
    return 50
}


給自定義的 uilabel 添加內容
修改 firsttableviewcontroller 中以下函數為:

復制代碼 代碼如下:


override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell {
    let cell = tableview.dequeuereusablecellwithidentifier("firsttableviewcell", forindexpath: indexpath) as firsttableviewcell

 

    cell.firstlabel.text = indexpath.row.description

    return cell
}


查看結果
4.0 寸:

 

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

4.7 寸:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

如果你得到以上結果,那么恭喜你自定義 cell 并使用 auto layout 成功!


22 行代碼實現拖動回彈
搭建界面
刪除首頁中間的按鈕,添加一個 view ,設置一種背景色便于辨認,然后對其進行絕對約束:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

拖動一個 uipangesturerecognizer 到該 view 上:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

界面搭建完成。

屬性綁定
切換到雙向視圖,分別右鍵拖動 uipangesturerecognizer 和該 view 的 top space 的 auto layout 屬性到 viewcontroller 中綁定:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

然后將 uipangesturerecognizer 右鍵拖動綁定:

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

編寫代碼

復制代碼 代碼如下:


class viewcontroller: uiviewcontroller {
   
    var middleviewtopspacelayoutconstant: cgfloat!
    var middlevieworiginy: cgfloat!
   
    @iboutlet weak var middleview: uiview!
    @iboutlet weak var middleviewtopspacelayout: nslayoutconstraint!
    @iboutlet var pangesture: uipangesturerecognizer!
    override func viewdidload() {
        super.viewdidload()
       
        pangesture.addtarget(self, action: selector("pan"))
        middleviewtopspacelayoutconstant = middleviewtopspacelayout.constant
        middlevieworiginy = middleview.frame.origin.y
    }

 

    override func didreceivememorywarning() {
        super.didreceivememorywarning()
        // dispose of any resources that can be recreated.
    }
   
    func pan() {
        if pangesture.state == uigesturerecognizerstate.ended {
            uiview.animatewithduration(0.4, delay: 0, options: uiviewanimationoptions.curveeaseinout, animations: { () -> void in
                self.middleview.frame.origin.y = self.middlevieworiginy
                }, completion: { (success) -> void in
                    if success {
                        self.middleviewtopspacelayout.constant = self.middleviewtopspacelayoutconstant
                    }
            })
            return
        }
        let y = pangesture.translationinview(self.view).y
        middleviewtopspacelayout.constant = middleviewtopspacelayoutconstant + y
    }

}


查看效果

 

iOS應用中使用Auto Layout實現自定義cell及拖動回彈

22 行代碼,拖動回彈效果完成!

延伸 · 閱讀

精彩推薦
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
主站蜘蛛池模板: 男男双性生子产乳高辣h | 亚洲AV蜜桃永久无码精品无码网 | 精品久久久久久无码人妻国产馆 | 97精品国产自在现线免费 | 日本免费久久久久久久网站 | 暖暖在线精品日本中文 | 女bbbbxxx孕妇 | 欧美18-19sex性处 | 婷婷色综合网 | 满城尽带黄金甲大胸片 | 亚洲va国产日韩欧美精品色婷婷 | 男人插曲女人下面 | 亚洲国产自拍在线 | 欧美成人v视频免费看 | 韩国三级在线高速影院 | 久久艹综合 | 免费人成在线观看 | 国产成人综合一区人人 | 欧美操大逼视频 | 男同桌脱我奶罩吸我奶作文 | bbwfreehd女厕所ved| 日韩成本大片35分钟免费播放 | 夫妻性生活一级黄色片 | 免费观看美景之屋 | 日产欧产va高清 | 亚洲成片在线看 | 国产精品13p | 高清不卡日本v在线二区 | 日本性爱| 美女被草漫画 | porno movie hd高清 | 无码任你躁久久久久久久 | 欧亚专线欧洲m码可遇不可求 | 色亚洲色图 | 四虎影视紧急入口地址大全 | ova催眠性指导5最新在线 | 91社区在线观看精品 | 四虎成人免费大片在线 | 四虎在线永久视频观看 | 国产精品高清视亚洲一区二区 | 日韩精品欧美激情国产一区 |