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

首頁 > 系統 > iOS > 正文

ios UITableView 自定義右滑刪除的實現代碼

2019-10-21 18:40:18
字體:
來源:轉載
供稿:網友

公司有個奇葩需求。刪除按鈕帶點圓角 不止如此,還有cell之間有間隔,cell圓角,cell左右有間隔。如下圖?。。。?!

ios,UITableView,右滑刪除,代碼

內心奔潰的我想了想了很多方法。(獲取系統自帶按鈕改圓角也試過,自定義手勢也試過)最后決定全部自定義。個人感覺這樣最合適。下面是效果圖

ios,UITableView,右滑刪除,代碼

今天有時間,稍微說下實現方式:

這個項目工程只是提供一種思路,應對場景是 需要自定義左滑刪除按鈕的樣式。

因為項目本身并不是修改系統的左滑刪除,而是自定義實現,所以任何樣式都算使用。

下面先說下項目的結構類型

ios,UITableView,右滑刪除,代碼

最底下自然是uitableviewCell 然后放入一個scrollview 填滿整個cell (若想有左右間隔,也可以不填滿)

scrollview 中放入一個uiview 和scrollview寬高相等 作為內容視圖 。界面的所有控件視圖都添加到這個uiview中!??! 右邊就是自定義的刪除按鈕 也添加到scrollview中。這樣就能實現滑動效果了。(你也可以加2個按鈕,3個按鈕,隨你開心)

下面講下代碼

//設置代理- (void)awakeFromNib {  [super awakeFromNib];  self.myScrollView.delegate = self;}-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{  [self didBeginMove];}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  [scrollView setContentOffset:scrollView.contentOffset animated:YES];  [self scrollViewDidEnd:scrollView];}-(void)scrollViewDidScroll:(UIScrollView *)scrollView{  CGPoint offset = scrollView.contentOffset;  //左邊不彈性  if (offset.x < 0 ) {    offset.x = 0;    [scrollView setContentOffset:offset animated:NO];  }}-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{  NSLog(@"beginbegin");  [scrollView setContentOffset:scrollView.contentOffset animated:NO];  [self scrollViewDidEnd:scrollView];}-(void)scrollViewDidEnd:(UIScrollView *)scrollView{  [scrollView setContentOffset:scrollView.contentOffset animated:YES];  CGPoint point = scrollView.contentOffset;  if (point.x > DELETEWIDTH / 2) {    self.deleteLeftLayout.constant = -3;    [UIView animateWithDuration:0.3 animations:^{      [self layoutIfNeeded];    }];        [scrollView setContentOffset:CGPointMake(DELETEWIDTH -3 , 0) animated:YES];    self.detailView.layer.cornerRadius = 0;  }else{    self.deleteLeftLayout.constant = 0;    [self layoutIfNeeded];    [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];    self.detailView.layer.cornerRadius = 5;  }}-(void)didBeginMove{  if (self.tableview) {    MyTableViewCell *currentCell = objc_getAssociatedObject(self.tableview, @"currentCell");        if (currentCell != self && currentCell != nil) {      [currentCell hideButtonsWithAnimation];    }    objc_setAssociatedObject(self.tableview, @"currentCell", self, OBJC_ASSOCIATION_ASSIGN);  }}-(void)hideButtonsWithAnimation{  [self.myScrollView setContentOffset:CGPointMake(0, 0) animated:YES];  self.detailView.layer.cornerRadius = 5;  self.deleteLeftLayout.constant = 0;  [self layoutIfNeeded];}

代碼意思大致是,scrollview停止滾動時,根據最后的位置判斷是否顯示刪除按鈕。

這樣已經實現了左右拖拽,彈出關系效果了。接下來就有一些細節部分需要注意。

1.我們觀察到,uitableviewcell只會出現一個刪除,當tableView滾動,或另一個cell左滑刪除時,前一個cell需要關閉。下面是我的解決方案

首先,當tableviewcell里的scrollview開始拖拽時,將當前的cell和tableview關聯起來。并關閉之前關聯的cell

-(void)didBeginMove{  if (self.tableview) {    MyTableViewCell *currentCell = objc_getAssociatedObject(self.tableview, @"currentCell");        if (currentCell != self && currentCell != nil) {      [currentCell hideButtonsWithAnimation];    }    objc_setAssociatedObject(self.tableview, @"currentCell", self, OBJC_ASSOCIATION_ASSIGN);  }}

然后到tableview的代理中(注意是tableview,不是cell中的scrollview)當tableview準備滾動,就直接關閉掉他關聯的cell。

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{  MyTableViewCell *currentCell = objc_getAssociatedObject(self.tableView, @"currentCell");  if (currentCell != nil) {    [currentCell hideButtonsWithAnimation];  }}

代碼修正過一版,之前那版有點小bug。

2.當cell點擊時,如果處于編輯狀態,就先關閉編輯狀態。 我的做法是直接在內容view中添加點擊手勢(同時完成點擊事件的代理),然后內部屬性判斷是否處于編輯狀態。具體代碼時間問題沒有整理到demo中。各位見諒。

先寫這么多了。感覺你們也碰不到這么奇葩的產品和美工。

下載地址:nextTableDelete.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久网站| 精品自在线视频| 国产精品色婷婷视频| 日韩av观看网址| 国产在线观看精品| 91精品视频在线免费观看| 久久久久久久国产| 亚洲欧美日本另类| 国产视频自拍一区| 国产日韩欧美一二三区| 亚洲福利视频网| 国模吧一区二区| 国产综合久久久久| 欧美激情极品视频| 亚洲区在线播放| 亚洲国产又黄又爽女人高潮的| 91精品久久久久| 国内免费精品永久在线视频| 亚洲大胆人体在线| 精品一区二区电影| 亚洲视频欧美视频| 欧美精品999| 久久精品国产成人精品| 91免费观看网站| 亚洲精品www| 亚洲免费人成在线视频观看| 亚洲精品美女在线观看播放| 亚洲美女精品成人在线视频| 色综合老司机第九色激情| 97在线观看免费高清| 国产精品99久久久久久久久| 亚洲国产成人精品一区二区| 欧美成人精品不卡视频在线观看| 精品动漫一区二区三区| 日韩欧美在线国产| www欧美日韩| 亚洲精品一区二区三区不| 亚洲一区二区三区成人在线视频精品| 亚洲桃花岛网站| 欧美老女人www| 26uuu久久噜噜噜噜| 国产中文日韩欧美| 日韩一区二区在线视频| 亚洲精品白浆高清久久久久久| 欧美大荫蒂xxx| 激情成人中文字幕| 欧美在线不卡区| 欧美在线观看网址综合| 26uuu另类亚洲欧美日本一| 亚洲国产成人精品久久久国产成人一区| 夜夜嗨av一区二区三区四区| 欧美午夜丰满在线18影院| 热久久这里只有精品| 国产精品亚洲第一区| 尤物九九久久国产精品的特点| 欧美激情视频在线免费观看 欧美视频免费一| 日韩免费观看高清| 欧美一级视频在线观看| 国产成人精品日本亚洲专区61| 亚洲女人被黑人巨大进入al| 国产欧美一区二区三区四区| 日韩精品丝袜在线| 一区二区三区国产在线观看| 国产精品美乳在线观看| 欧美日韩国产一区中文午夜| 欧美xxxx综合视频| 国产精品大陆在线观看| 久久精品一偷一偷国产| 自拍偷拍亚洲在线| 国产精品日日摸夜夜添夜夜av| 国产精品亚洲精品| 久久久国产精彩视频美女艺术照福利| 欧美乱大交xxxxx另类电影| 色综合久久悠悠| 国产在线精品播放| 日韩欧美有码在线| 波霸ol色综合久久| 亚洲精品一区久久久久久| 亚洲最大的成人网| zzijzzij亚洲日本成熟少妇| 久久视频国产精品免费视频在线| 在线观看欧美视频| 欧美国产乱视频| 日本欧美国产在线| 欧美亚洲另类激情另类| 日韩欧美aⅴ综合网站发布| 国产成人福利视频| 欧美成人免费一级人片100| 亚洲第一页自拍| 日韩av黄色在线观看| 91九色精品视频| 日韩av网站大全| 亚洲综合精品一区二区| 国产精品自拍网| 欧美华人在线视频| 欧美性生交大片免费| 欧美日韩国产精品一区二区不卡中文| 欧美激情精品久久久| 日韩黄色av网站| 国产精品美女www爽爽爽视频| 亚洲精品自在久久| 亚洲精品97久久| 久久久久国产精品免费网站| 成人国产在线视频| 亚洲精品成人久久久| 亚洲一区二区在线播放| 欧美精品激情blacked18| 成人网在线观看| 日韩高清不卡av| 韩国福利视频一区| 伊人久久综合97精品| 欧美日韩第一页| 久久精品视频播放| 久久999免费视频| 欧美激情性做爰免费视频| 精品国产1区2区| 亚洲欧美激情视频| 亚洲第一免费播放区| 亚洲色图综合久久| 九九热这里只有在线精品视| 中文一区二区视频| 一本色道久久88综合亚洲精品ⅰ| 亚洲精品乱码久久久久久按摩观| 色先锋资源久久综合5566| 欧洲美女免费图片一区| 国产剧情久久久久久| 91经典在线视频| 欧美视频裸体精品| 亚洲国内高清视频| 成人xxxxx| 色婷婷综合久久久久| 在线观看日韩专区| 国产精品久在线观看| 午夜伦理精品一区| zzijzzij亚洲日本成熟少妇| 欧美大胆a视频| 欧洲永久精品大片ww免费漫画| 日韩av黄色在线观看| 国产精品久久久久秋霞鲁丝| 91免费视频国产| 日韩av电影在线免费播放| 欧美性在线视频| 成人在线观看视频网站| 欧美日韩中文在线观看| 成人欧美在线观看| 久久av红桃一区二区小说| 久久久综合免费视频| 一本色道久久综合狠狠躁篇怎么玩| 亚洲色图13p| 欧美另类99xxxxx| 亚洲成人网在线观看| 日韩小视频在线观看| 国产999在线观看| 国产精品伦子伦免费视频| 亚洲人成电影在线观看天堂色| 中文字幕精品在线视频| 91精品国产91久久| 精品国产欧美一区二区五十路| 国产成人啪精品视频免费网| 日韩激情第一页| 97av在线视频免费播放| 97在线看福利| 久久99青青精品免费观看| 国产精品视频免费在线|