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;
未完待續...
相關文章
- Category 的一些事Go
- VS Code 的一些事
- React事務的一些理解React
- Java淺Copy的一些事Java
- tcp/ip 需要知道的一些事TCP
- 關於GCD開發的一些事GC
- LLVM與Clang的一些事兒LVM
- 關於原型設計的一些事原型
- 記我最近發生的一些事
- 關於博彩門事件的一些看法和自己的一些事事件
- 用網上的API做一些有趣的事API
- spring事務管理的一些注意點Spring
- 程式設計師要注意的一些事程式設計師
- 從事技術工作以來的一些的感想~
- js中關於base64的一些事JS
- JS 中關於 base64 的一些事JS
- Laravel 專案上線的一些注意事項Laravel
- 細說JavaScript單執行緒的一些事JavaScript執行緒
- ORACLE RMAN恢復中的一些注意事項Oracle
- 程式設計師最應該知道的一些事程式設計師
- 關於開源,你可能沒想到的一些事
- 關於spring事務原始碼的一些小理解Spring原始碼
- BIO到NIO原始碼的一些事兒之BIO原始碼
- SAP UI5 使用 CSS 的一些注意事項UICSS
- 關於 Git 你所不知道的一些事Git
- Github Atom 你所不知道的一些事Github
- 一些鮮為人知的程式設計事實程式設計
- MD5和MD5破解的一些事
- 安裝並使用 Ubuntu Server 的一些注意事項UbuntuServer
- BIO到NIO原始碼的一些事兒之NIO 中原始碼
- 關於資料庫事務和鎖的一些分析資料庫
- BIO到NIO原始碼的一些事兒之NIO 上原始碼
- 列舉學完Java開發後能做的一些事!Java
- 程式設計師應該關注的一些事兒程式設計師
- Python程式設計中需要注意的一些事Python程式設計
- 非常詳細地Hive的基本操作和一些注意事項Hive
- 聊聊中後臺前端應用:模組相關的一些事前端
- 沒人告訴你關於z-index的一些事Index