公司动态
Swift学习笔记39-实战注意事项
注意事项注意一些需要释放的页面尽量避免调用全局变量Cell的事件就比如didselect是在最下面一层要是上面有其他uicontrol或者uibutton会把事件抢走能调用系统API的地方尽量调用系统的API不要自己写就比如TableView里的didSelect是控制点击事件的需要点击整块Cell的时候直接用这个函数就好了。千万不要使用AutoLayout非常多问题实在不行就用SwiftUI嵌套本地化文本不要设置comment内容数组越界是一个大问题千万要注意⚠️就比如现在要用第五位必须先确保第五位存在。分割字符串后使用map映射到一个数组中的APIimportFoundationletstrapple,banana,orange// components 直接返回 [String] 数组letresult:[String]str.components(separatedBy:,).map{$0.capitalized}print(result)// 输出: [Apple, Banana, Orange]TableView的Cell高度控制最好还是用一个Cell内的函数来控制高度和内部元素的变化然后再在渲染cell的时候使用它不然会出很多Bug。而控制状态的bool变量最好是在TableView的VC里有多个Cell最好分别存储它们的状态, 就像[Bool]为了避免史山代码的形成没有使用过也不从未上线的代码就将其删除。注意曾在线上版本里使用过的代码绝对不可以删除注释掉就好了。避免在重用机制下使用临时变量就比如TableViewtableView.reconfigureRows(at: [indexPath])就比如这个可能会出未知的问题既然弱引用了Self后面刷新的时候就继续用self引用其他组件就好了。functableView(_tableView:UITableView,cellForRowAt indexPath:IndexPath)-UITableViewCell{letbasebaweiQABases[indexPath.row]letisExpandedisExpandeds[indexPath.row]letcell:BaweiQACelltableView.cellForRow(at:indexPath)as?BaweiQACell??BaweiQACell(style:.default,reuseIdentifier:BaweiQACell)cell.question_content_label.textbase.questions cell.answers_content_label.textbase.answers// cell.answers_content_label.setLineHeight(24)letq_sizeYK_Toast.getStrSize(text:base.questions,font:.systemFont(ofSize:14),size:.init(width:SCREENWIDTH-64,height:600))// let a_size YK_Toast.getStrSize(text: base.answers, font: .systemFont(ofSize: 14), size: .init(width: SCREENWIDTH - 64, height: 600))leta_sizeYK_Toast.getStrSize(text:base.answers,font:.systemFont(ofSize:14),size:.init(width:SCREENWIDTH-64,height:1000),lineSpacing:4)letexpanded_false_backView_size:CGRect.init(x:GAP_16,y:0,width:SCREENWIDTH-GAP_32,height:16308q_size.height160.5161816)letexpanded_true_backView_size:CGRect.init(x:GAP_16,y:16308q_size.height24308a_size.height160.516,width:SCREENWIDTH-GAP_32,height:16308q_size.height160.5161816(24308a_size.height))cell.selectionStyle.nonecell.backgroundColor.clear cell.question_content_label.frame.init(x:16,y:16308,width:SCREENWIDTH-64,height:q_size.height)cell.backView.frameexpanded_false_backView_size cell.dividerView.frame.init(x:16,y:16308q_size.height16,width:SCREENWIDTH-64,height:0.5)cell.expend_answer.frame.init(x:16,y:16308q_size.height1616,width:SCREENWIDTH-64,height:18)cell.configure(with:isExpanded,q_size:q_size,a_size:a_size)cell.clickBlock{[weakself]inself?.isExpandeds[indexPath.row]!isExpanded// tableView.reconfigureRows(at: [indexPath])self?.homeScroll.reloadRows(at:[indexPath],with:.automatic)#warning(3.5修改)//尽量避免在重用机制的条件下使用临时变量}returncell}做展开收起效果做到操作后实时刷新TableVIew高度的API主要有这两个self?.homeScroll.reconfigureRows(at:[indexPath])self?.homeScroll.reloadRows(at:[indexPath],with:.automatic)