亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

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

2020-07-26 03:26:33
字體:
來源:轉載
供稿:網友

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

新建 Cocoa Touch Class:

20163692249976.jpg (730×430)

設置和下圖相同即可:

20163692312710.jpg (730×430)

檢查成果

20163692333493.jpg (1920×988)

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

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

20163692358965.jpg (258×288)

新建 Table View Controller 頁面
新建一個 Table View Controller 頁面,并把我們之前創建的 Swift on iOS 那個按鈕的點擊事件綁定過去,我們得到:

20163692415659.jpg (1387×749)

然后創建一個名為 firstTableViewController 的 UITableViewController 類,創建流程跟前面基本一致。不要創建 xib。然后選中 StoryBoard 中的 Table View Controller(選中之后有藍色邊框包裹),在右側對它和 firstTableViewController 類進行綁定:

20163692431858.jpg (946×787)

調用自定義 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 成功了!

20163692456608.jpg (375×689)

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

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

20163692516167.jpg (1245×472)

給 ImageView 添加約束:

20163692533342.jpg (1191×729)

選中該 ImageView(左箭頭所示),點擊自動 Auto Layout(右箭頭所示),即可。

給 ImageView 設置圖片:

20163692550545.jpg (1209×544)

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

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

20163692609674.jpg (1403×903)

綁定完成!

約束 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 寸:

20163692631719.jpg (320×590)

4.7 寸:

20163692646755.jpg (375×689)

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


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

20163692714280.jpg (1363×857)

拖動一個 UIPanGestureRecognizer 到該 View 上:

20163692730213.jpg (1358×884)

界面搭建完成。

屬性綁定
切換到雙向視圖,分別右鍵拖動 UIPanGestureRecognizer 和該 View 的 Top Space 的 Auto Layout 屬性到 ViewController 中綁定:

20163692804484.jpg (1383×743)

然后將 UIPanGestureRecognizer 右鍵拖動綁定:

20163692824786.jpg (1343×533)

編寫代碼

復制代碼 代碼如下:

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
    }

}


查看效果

20163692843461.gif (435×726)

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品国产三级国产aⅴ9色| 精品久久在线播放| 久久久久国产精品免费| 欧美午夜精品久久久久久人妖| 高跟丝袜一区二区三区| 欧美片一区二区三区| 日韩电影大全免费观看2023年上| 国产精品色婷婷视频| 91chinesevideo永久地址| 色综合伊人色综合网站| 国产精品福利在线观看网址| 国产精品美女无圣光视频| 国外色69视频在线观看| 136fldh精品导航福利| 91在线观看免费网站| 国产精品成av人在线视午夜片| 在线日韩av观看| 日韩欧美在线第一页| 亚洲欧美国产一区二区三区| 欧美日本中文字幕| 亚洲色图17p| 这里只有精品在线观看| 国产福利精品视频| 亚洲乱码国产乱码精品精天堂| 欧美午夜激情视频| 亚洲电影免费观看高清完整版在线观看| 97精品国产97久久久久久免费| 欧美丝袜一区二区三区| 精品视频在线观看日韩| 亚洲va欧美va国产综合剧情| 国产精品一香蕉国产线看观看| 在线性视频日韩欧美| 日韩欧美综合在线视频| 777午夜精品福利在线观看| 清纯唯美亚洲综合| 国产成+人+综合+亚洲欧洲| 亚洲欧美制服另类日韩| 欧美小视频在线| 久久噜噜噜精品国产亚洲综合| 亚洲成人网在线| 日本一区二区不卡| 日韩国产精品视频| 国产精品日韩欧美大师| 中文字幕精品一区二区精品| 欧美亚洲国产视频小说| 欧美精品久久久久久久| 亚洲老司机av| 亚洲一区999| 欧美大片免费观看在线观看网站推荐| 欧美一级片一区| 国产精品久久久久秋霞鲁丝| 欧美夫妻性生活xx| 日韩欧美国产黄色| 久久精品国产久精国产思思| 久久久欧美一区二区| 欧美视频中文在线看| 亚洲自拍偷拍福利| 国产精品pans私拍| 亚洲aⅴ男人的天堂在线观看| x99av成人免费| 国产福利精品视频| 亚洲精品成人久久久| 91久久久亚洲精品| 日韩国产高清视频在线| 欧美成人免费播放| 国产脚交av在线一区二区| 欧美精品一区二区三区国产精品| 国产精品久久久久9999| 亚洲国产中文字幕久久网| 久久久av网站| 国产激情999| 亚洲欧美综合图区| 欧美成人精品激情在线观看| 国产97在线播放| 欧美日韩美女在线观看| 国产精品日韩久久久久| 国产亚洲欧洲高清| 97国产精品免费视频| 久久精品中文字幕一区| 国产精品视频白浆免费视频| 日韩中文字幕免费看| 97在线看福利| 国内偷自视频区视频综合| 国产精品美女av| 精品久久久久久中文字幕一区奶水| 欧美午夜精品伦理| 欧美性猛交xxxx乱大交3| 狠狠色香婷婷久久亚洲精品| 57pao国产精品一区| 5566成人精品视频免费| 日韩高清av一区二区三区| 国产精品视频白浆免费视频| 欧美福利视频网站| 欧美国产视频一区二区| 欧美电影在线观看网站| 久久久久久亚洲精品中文字幕| 日本欧美国产在线| 久久国产精品首页| 国产97色在线| 视频在线观看一区二区| 日韩欧亚中文在线| 久久乐国产精品| 一区二区三区黄色| 国产精品久久久久秋霞鲁丝| 亲爱的老师9免费观看全集电视剧| 欧洲精品毛片网站| 日本一区二区在线免费播放| 欧美激情2020午夜免费观看| 国产精品成人aaaaa网站| 成人美女免费网站视频| 欧洲亚洲女同hd| 在线观看国产精品日韩av| 日韩高清人体午夜| 日韩高清av在线| 国产精品第2页| 欧洲成人在线观看| 国产精品日日摸夜夜添夜夜av| 亚洲欧美一区二区精品久久久| 精品福利一区二区| 欧美丰满少妇xxxxx| 亚洲欧美精品在线| 亚洲精品美女免费| 欧美在线观看www| 欧美孕妇与黑人孕交| 亚洲美女又黄又爽在线观看| 欧美成人一区二区三区电影| 91国偷自产一区二区三区的观看方式| 中文字幕在线观看日韩| 欧美性猛交xxxx黑人猛交| 亚洲国产精彩中文乱码av在线播放| 久久av在线播放| 久久资源免费视频| 久久99精品久久久久久琪琪| 欧美国产精品人人做人人爱| 国产视频亚洲精品| 国产精品视频网| 日本不卡免费高清视频| 久久99久久久久久久噜噜| 久久精品精品电影网| 精品久久久久久亚洲国产300| 国产精品日韩电影| 国产精品无码专区在线观看| 成人观看高清在线观看免费| 热99精品只有里视频精品| 成人网在线免费看| 一本大道亚洲视频| 久久久久九九九九| 91精品在线看| 欧美极品xxxx| 在线免费观看羞羞视频一区二区| 日韩少妇与小伙激情| 久久频这里精品99香蕉| 欧美激情乱人伦| 国产亚洲精品日韩| 成人黄色短视频在线观看| 一本一本久久a久久精品综合小说| 91精品视频免费看| 精品欧美一区二区三区| 亚洲影院色在线观看免费| 成人福利视频在线观看| 亚洲成人av在线播放| 日本精品视频网站| 在线看日韩欧美| 亚洲一区二区免费|