iOS-UITableViewCell的一些事
Q1:點選自己的UITableViewCell,cell上面的UILabel的背景會隱藏,下次又出現的問題?
A1: 如果自己所寫的tableViewCell 上面的UILabel你需要設定圓角和背景,那麼他就會影藏起來,那麼你需要在
-(void)layoutSubViews
方法中重新設定一遍(小編親測好用)
接下來直接上code
-(void)setDescLabel:(UILabel *)descLabel {
_descLabel = descLabel;
_descLabel.textColor = RGB(255, 255, 255, 1);
_descLabel.font = [UIFont fontWithName:@"PingFangSC-Medium" size: 10];
_descLabel.textAlignment = NSTextAlignmentCenter;
_descLabel.layer.backgroundColor = RGB(51, 51, 51, 1).CGColor;
_descLabel.layer.cornerRadius = 10.0;
_descLabel.layer.masksToBounds = YES;
}
// 解決UILabel背景消失
- (void)layoutSubviews
{
[super layoutSubviews];
_descLabel.layer.backgroundColor = RGB(51, 51, 51, 1).CGColor;
_descLabel.layer.cornerRadius = 10.0;
_descLabel.layer.masksToBounds = YES;
}
Q2:xib只適用於在靜態頁面中使用;如果在普通頁面中使用,而且你還想設定自定義cell的寬度和圓角等等,就必須是重寫-(void)setFrame:(CGRect)frame
這個方法,但是這個方法會影響到你滑動刪除的功能(謹慎使用,如果你的cell沒有用到滑動刪除,那當然就不用考慮到這個問題了)?
A2: 針對xib,小編目前也沒有好的解決方法。所以我的解決方法是在普通頁面不去使用xib,用純程式碼自定義cell,不去重寫
-(void)layoutSubViews
這個方法,在cell上面新增一層背景View,這樣就能完美的解決所提出的問題了(小編親測好用)
接下來直接上code
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
// 點選沒有顏色改變
[self setSelectionStyle:UITableViewCellSelectionStyleNone];
self.backgroundColor = [UIColor clearColor];
self.bgView2 = [UIView new];
self.bgView2.layer.cornerRadius = 5;
self.bgView2.backgroundColor = [UIColor whiteColor];
_bgView2.frame = CGRectMake(10, 3, (Screen_Width-2*10), 67*Height_Ratio);
[self.contentView addSubview: self.bgView2];
self.nameLabel = [UILabel new];
self.nameLabel.frame = CGRectMake(leftMargin*2, leftMargin, (Screen_Width-2*leftMargin)/2, 30);
[self.contentView addSubview:_nameLabel];
self.propertyLabel = [UILabel new];
_propertyLabel.frame = CGRectMake(_nameLabel.frame.size.width+_nameLabel.frame.origin.x, _nameLabel.frame.origin.y, (Screen_Width-2*leftMargin)/2-30, 30);
[self.contentView addSubview:_propertyLabel];
self.assessoryView = [UIImageView new];
_assessoryView.frame = CGRectMake(_propertyLabel.frame.size.width+_propertyLabel.frame.origin.x, _nameLabel.frame.origin.y+10, 7, 11);
[self.contentView addSubview:_assessoryView];
}
return self;
}
Q3:UITableView滑動cell,介面卡頓的原因及其優化方案?
A3:
介面卡頓的原因是:cell賦值內容時,會根據內容設定佈局,也就可以知道cell的高度,若有1000行,就會呼叫1000次 cellForRow方法,而我們對cell的處理操作,都是在這個方法中賦值,佈局等等,開銷很大。
1> cell上面如果有圖片顯示,那麼下載圖片一定要用縮率圖,一定要進行非同步下載,不然同步下載的話,隨著cell的條數增加,介面就會會卡頓。
2> cell上面的影象和背景儘量使用不透明檢視,因為半透明的檢視需要APP去消耗效能進行渲染
3> cell介面上面的內容不宜太複雜,圖片顯示用小圖,點選檢視用大圖
4> 不要重複建立不必要的cell,儘量重用cell
5> 文字圖片非同步載入,可以使用drawInRect繪製
6> 減少cell的重新整理,儘量使用區域性重新整理
7> 下面兩行程式碼據說可以增加流暢度cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
未完待續...
相關文章
- Java淺Copy的一些事Java
- React事務的一些理解React
- 記我最近發生的一些事
- 用網上的API做一些有趣的事API
- 關於spring事務原始碼的一些小理解Spring原始碼
- js中關於base64的一些事JS
- JS 中關於 base64 的一些事JS
- Laravel 專案上線的一些注意事項Laravel
- 關於開源,你可能沒想到的一些事
- 安裝並使用 Ubuntu Server 的一些注意事項UbuntuServer
- 程式設計師最應該知道的一些事程式設計師
- BIO到NIO原始碼的一些事兒之BIO原始碼
- SAP UI5 使用 CSS 的一些注意事項UICSS
- BIO到NIO原始碼的一些事兒之NIO 上原始碼
- BIO到NIO原始碼的一些事兒之NIO 中原始碼
- 列舉學完Java開發後能做的一些事!Java
- 關於資料庫事務和鎖的一些分析資料庫
- 借2020年的TGA來聊聊遊戲的一些敘事方式遊戲
- 非常詳細地Hive的基本操作和一些注意事項Hive
- 關於一些基礎的dp——硬幣的那些事(dp的基本引入)
- 公告:關於精準測試一些雜事
- BIO到NIO原始碼的一些事兒之NIO 下 之 Selector原始碼
- 基於Doris實時資料開發的一些注意事項
- 聊聊中後臺前端應用:模組相關的一些事前端
- Angular 14 inject 函式使用過程中的一些注意事項Angular函式
- [爬坑日誌1]寫查詢的mysql一些小注意事項MySql
- 給模切行業一些選擇ERP系統的注意事項行業
- BIO到NIO原始碼的一些事兒之NIO 下 Buffer解讀 上原始碼
- Maven多模組專案打包前的一些注意事項(打包失敗)Maven
- BIO到NIO原始碼的一些事兒之NIO 下 Buffer解讀 下原始碼
- 直播app開發中,關於執行緒需要了解的一些事APP執行緒
- 陪玩原始碼介面效能優化,需要你掌握的關於呼叫的一些事原始碼優化
- 獨立開發者在參加活動時應該注意的一些事項
- 前端的一些坑,一些記錄,一些冷知識前端
- 相親交友原始碼開發,關於分散式快取應該瞭解的一些事原始碼分散式快取
- 一些小的方法工具
- Service的一些迷思
- SQLSERVER的一些坑。SQLServer