自适应高度 -------- // 尽量提高计算效率, 已计算过的高度需要进行缓存, 没必要进行第二次运算 // 必须满足3个条件 // 1. cell.contentView 四边与内部元素有约束关系...UITableViewAutomaticDimension; // -------- 离屏渲染: 圆角/阴影 -------- // 离屏渲染: 圆角/阴影, 另外开辟渲染缓冲区, 消耗性能 (多: 缓冲区频繁合并 上下文频繁切换, 导致掉帧) UIImageView...*imgV = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"placeholder"]]; imgV.frame = CGRectMake...100, 100, 100, 100); [self.view addSubview:imgV]; // 优化方案1: (推荐使用) CAShapeLayer UIBezierPath 结合, 可设置单个圆角...*)cell forRowAtIndexPath:(NSIndexPath *)indexPath { } - (UITableViewCell *)tableView:(UITableView *)
前言 之前在UITableViewCell系列之(一)让你的cell支持二次编辑中说过,很早就想系统的写一篇关于UITableViewCell的文章,目的是总结一下自己在项目开发中用过的一些关于UITableViewCell...visionDiff.gif 步骤 备注: demo中cell是用xib文件定义、布局的,而非代码的方式 自定义cell。...给cell的contentView添加一个UIImageView子控件 给imageView添加上下左右约束 给cell添加一个对象方法。...用于tableView滚动时,更新imageView的Y坐标值 在UIScrollViewDelegate的scrollViewDidScroll:方法里调用cell的对象方法,更新imageView的...约束设置如下: ? Snip20160730_1.png 2.
UITextFeild的类中实现如下方法,关键是rightViewMode的设置,默认是不显示的。...实现方法是在TableView加载后增加整体的动效,通过循环和延迟,让每个Cell从不同的时间开始经历相同的时间动效结束。...UIImageView全屏展示并关闭 ?...点击.gif actionTap 是cell中的图片上加的手势事件。...*cell = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:indexPath]; UIImageView *imageView
为了减少代码的重复编写把cell中相同的部分抽象成父类,然后继承。不过也是结合着storyboard做的。在优化时转发的View和评论的View相似,于是就做了个重用。...: UITableViewCell 7 //接收block块 8 -(void)setMyCellBlock:(MyCellBlock) block; 9 10 //接收字典 11 -(void...ReTextTableViewCell 10 11 -(void)setDic:(NSDictionary *)dic 12 { 13 [super setDic:dic]; 14 //移除约束...1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic1 context:nil]; 22 23 //创建新的约束...由上面的界面可以清楚的看到转发和评论的界面是基本一致的,所以我们在代码中可以用一个ViewController来控制这个视图,通过点击不同的按钮来拼接不同的url.
cell的也需做相关修改 2.1 全局修改 2.2 注意事项 2.3 使用到的工具类 see also 前言 今天升级最新IDE Xcode,准备适配iOS14 API,结果发现app首页的cell中按钮也无法点击了...Xcode自带的DebugViewHierarchy视图分析发现问题的原因是:被系统自带的UITableViewCellContentView遮挡在底部了 ?...私有API _printHierarchy 和recursiveDescription 关于视图层级分析你也可以使用私有API _printHierarchy和recursiveDescription 在lldb...All rights reserved. // #import "UITableViewCell+CRMaddSubView.h" @implementation UITableViewCell (...UITableViewCell * myCell = (UITableViewCell *)[textField superview].superview; 所以使用class的时候,最好写得健壮性强点
在工程中添加一个新文件.然后在 iOS/Source选项中,选择Cocoa Touch Class模板.给这个类命名为PlayersViewController并且把它设置为UITableViewController...改变约束为Top: 0, Right: 20, Bottom: 0 and Left: 20.确保这四个红色指针在图片中高亮显示.点击弹出窗口底部的 Add 4 Constraints. ?...(在选中的菜单视图部分).这个stack view应该放到正确的位置上,之后橙色的约束错误就会消失了....在工程中添加一个新的文件,使用Cocoa Touch Class模板.命名它为PlayerCell,并且把它作为UITableViewCell的子类.不要勾选创建XIB的选项,正如你在storyboard...@IBOutlet weak var ratingImageView: UIImageView! 所有的变量都是IBOutlet类型的,它可以连接到当前storyboard中的控制器.
前言 问题:升级最新IDE Xcode,发现app首页的cell中按钮也无法点击了。...cell.addSubView(tempView1) 这种方式添加的,通过Xcode自带的DebugViewHierarchy视图分析发现问题的原因是:被系统自带的UITableViewCellContentView遮挡在底部了...API _printHierarchy 和recursiveDescription 关于视图层级分析你也可以使用私有API _printHierarchy 和recursiveDescription 在lldb...(187.5 0; 170.5 60); opaque = NO; tag = 1; layer = > | | | <UIImageView...3.2 iOS 恢复调用栈(适配iOS14) 原理:objective-c 函数信息除了保存在符号表中,还保存在其他段中 https://github.com/zhangkn/restore-symbol4iOS14
前一段时间,公司招聘了一个新员工,界面做出来了,但是很卡,我看完他写的代码,发现没有对UITableViewCell进行循环使用,而且在UITableView代理方法中,创建了很多并没有什么用的对象,一些调用频繁的方法也没有很好地处理...Paste_Image.png 被static修饰的局部变量:只会初始化一次,在整个程序运行中,只有一份内存。...Paste_Image.png 选中cell,点击重用标识 这样在代码中,就可以省略掉:那个判断语句:if(cell== nil){创建cell的方法} 以后在tableView中开发一个cell ?...添加一个UIView,设置左右下部约束,高度约束设为1,就可以看到一条线贯穿整个cell的底部了。 ?...将要显示出来的方法中执行下面的代码 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell
一点UITableView滑动性能优化扩展 影响UITableView的滑动,有哪些因素呢? 关于这一点,人眼能识别的帧率是60左右,这也就是为什么,电脑屏幕的最佳帧率是60Hz。...下面举例说明: 1.在主线程中做耗时操作 耗时操作,包括从网络下载、从网络加载、从本地数据库读取数据、从本地文件中读取大量数据、往本地文件中写入数据等。...(这一点,相信大家都知道,要尽量避免在主线程中执行,一般都是创建一个子线程来执行,然后再回到主线程) 2.动态计算UITableViewCell的高度,时间过久 在iOS7之前,每一个Cell的高度,...关于这一点,我以前的做法是在Cell中定义一个public方法,用来计算Cell高度,然后计算完高度后,将高度存储在Cell对应的Model中(Model里定义一个属性来存高度),然后在渲染Cell时,...这样在为Cell各个子控件赋值时,仅仅是取值、赋值,在计算Cell高度时,也仅仅是加法运算。 3.界面中背景色透明的视图过多 为什么界面中背景色透明的视图过多会影响UITableView的流畅?
其实自定义table view的样子很简单,无非就是把table view和table view cell的背景变成透明的,然后在指定视图和cell的背景图片(当然,也可以指定table view的背景图片...*background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; [self.view...UIScrollViewIndicatorStyleWhite]; [self.view addSubview:theTableView]; } return self; } 代码中的注释已经很清楚了...先设置视图的背景,再设定table view的背景 再看另外一断代码,设置了cell的背景,注意,这里面使用了自定义的cell类CustomCell - (UITableViewCell *)tableView...indexPath.row + 1]]]; return cell; } 我们再看看如何定义自定义的cell #import @interface CustomCell : UITableViewCell
77BF0FB21C66.png 创建好工程后,我们会进入这个界面 C18EA84A-89AF-4920-8824-1CF1F2CA8B8C.png 好了开始编程:写一个创建子视图的方法,里面创建一些基本的UI控件,然后在viewDidLoad...中调用: override func viewDidLoad() { super.viewDidLoad() self.createSubViews()...self.view.addSubview(myBtn) func click(sender: UIButton) { print("%@",sender); } 4.UIImageView...// 4.UIImageView let myImgView = UIImageView(frame: CGRectMake(20, 20, 100, 100))...本人也是正在学习中,文章内容如有错误,还请指正,有需要优化的地方,也请帮忙指出,帮助大家共同进步
目的 在使用SDWebImage加载图片时,尤其是加载gif等大图时,SDWebImage会将图片缓存在内存中,这样是非常吃内存的,这时我们就需要在适当的时候去释放一下SDWebImage的内存缓存,才不至于造成...使用回调 blocks 在 block 中得到图片下载进度和图片加载完成(下载完成或者读取缓存)的回调,如果你在图片加载完成前取消了请求操作,就不会收到成功或失败的回调 [cell.imageView...自定义缓存 key 有时候,一张图片的 URL 中的一部分可能是动态变化的(比如获取权限上的限制),所以我们只需要把 URL 中不变的部分作为缓存用的 key。...中的 imageView 加载不同尺寸的网络图片时会出现尺寸缩放问题。...解决方案: 自定义 UITableViewCell,重写 -layoutSubviews 方法,调整位置尺寸; 或者直接弃用 UITableViewCell 的 imageView,自己添加一个 imageView
子 View 的顺序和子 View 返回的数组中的位置有关(storyboard 中左侧的树形结构图中的先后顺序)。...contentView里默认有 3 个控件:2 个UILabel、1一个UIImageView,并由此产生了四种不同的 UITableViewCell 的显示样式。...(withIdentifier: "abc") // 池子中没有就创建一个新的 if cell == nil { cell = UITableViewCell...UITableViewDiffableDataSource 在 iOS 13 中引入了新的 API — Diffable Data Source,它不仅能够驱动 UITableView 和 UICollectionView...NSCollectionLayoutAnchor 在 Item 中,可能需要给其加上小红点或者未读消息数等附加视图,在 UICollectionViewCompositionalLayout 中,可以通过
在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦。...当点击图片时会跳转到另一个Controller中来进行图片显示,在图片显示页面中添加了一个捏合的手势(关于手势,请参考:iOS开发之手势识别)。...点击播放按钮,会播放录制的音频,cell的大学会根据内容的多少来调整,而cell中textView的高度是通过约束来设置的。 ? ...,获取工具栏中textView的ContentSize,通过ContentSize来调整ToolView的高度约束,代码如下: 1 //更新toolView的高度约束 2 -(void)updateHeight...,在图片显示View中通过捏合手势来调整图片的大小,代码如下: 1 - (IBAction)tapPichGesture:(id)sender { 2 UIPinchGestureRecognizer
但是实际上我们在HQAViewController中的代码并没有很大的改动。仅仅是下面赋值的时候稍微改动了一点点而已。...那么昵称和头像这类的赋值就不能直接在cell中完成,我们只需要将viewModel传给topView,然后在topView中赋值就好了。...memberIcon } } 而且HQACell中的代码我们一点都没有改动,还是原来的样子 class HQACell: UITableViewCell { var viewModel...关于性能的一点探讨 之前在didSet方法中设置时,如果是表格,每次滚出屏幕再滚动回来的时候都要重新执行didSet方法,重新计算。不断的消耗CPU。一定会多多少少影响一点性能的。...而在ViewModel中的我们自定义的memberIcon是一个存储型属性,在init构造函数中,直接计算出该是哪个会员图标。计算好以后,下次就可以直接使用,不再需要计算了。
在开始之前强烈建议先去读我之前的文章:最新版SDWebImage的使用。心里有个大概再去探讨细节,效果更佳。...我们先来看看UIImageView+WebCache中的基本方法: 在UIImageView+WebCache类的最上面,很贴心的贴了一个使用例子,这也是我们很常见的tableViewCell加载图片的场景...在SDWebImageManager的downloadImageWithURL方法中创建operation并返回,保存在operationDictionary中。...答案是:objc_setAssociatedObject,对象关联,动态的给UIImageView添加新属性。在SDWebImage中有很多这种用法,看到你就要知道,这就是动态增加了属性。 ...在SDWebImageManager的downloadImageWithURL方法中,我们找到了赋值的地方 operation.cancelBlock = ^{ [subOperation
背景: 1.在使用了MJRefresh之后,当UITableView滑到底部的时候需要继续上拉(比之前的上拉费力)才能进行刷新。 效果图: ?...代码: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath...:方法中获取每个cell的行数,当数据源中未展示的数据不够下一屏的数据的时候就去利用MJRefresh加载下一页的数据。...UITableView的当前页面去创建一个UIImageView作为当前Controller的一个成员变量,记为picView,但并不添加到当前Controller上(为的是利用该UIImageView...在cellForRowAtIndexPath:方法中在利用当前Cell上的UIImageView去下载图片的同时利用picView去下载数据源中还未展示的cell上的UIImageView上要显示的图片
1 Xcode中出现的问题 ---- 1.Xcode7.1中关于bitcode的问题 升级到Xcode7.1后,在模拟器下编译通过,但是切换到真机编译遇到如下问题 ?...解决方法: 点击UITableViewCell时,没有点击效果,在cellForRowAtIndexPath:方法中写上 cell.selectionStyle = UITableViewCellSelectionStyleNone...; 点击UITableCell时,Cell背景颜色不变,但是上面自定义的控件如:UILabel、UIImageView会变颜色 设置UILabel或UIImageView的Highlighted 然后...在cellForRowAtIndexPath:方法中写上 UIView *view_bg = [[[UIView alloc]initWithFrame:cell.frame]autorelease]...many arguments to function call 将XCode升级到7后,报Too many arguments to function call, expected 0, have *,在XCode5.1
Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据。...下面就让我们自定义两种Cell来把上面的TableView完善一下吧: 1.创建两种Cell,并给Cell中的各个控件设置约束 ? ...2.上面的cell是我们自定义的cell,需要关联两个UITableViewCell类,然后在Cell对象中进行控件的配置和赋值,其中的一个自定义Cell的关键代码如下,在TableView中我们只需要调用...先给自己发的博文设置一个垂直约束,下面转发的博文只设置编辑约束,不设置高度约束。...a.在我们Cell的类中需要定义一个block块的类型变量,用于在TableViewController中回调使用,在block回调时,我们就可以把那个Cell以及Cell中被点击的按钮传到TableViewController
reloadData]; }else { NSInteger selected2 = [self.IndexPathArray[1] integerValue]; UIImageView...就是在点击第一列的时候。...:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier...*imgV = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_selected"]]; imgV.frame...selected1][selected2][indexPath.row]; } return cell; } 一大堆,确实不利于观看,你们可以把这个单独写进cell类中,
领取专属 10元无门槛券
手把手带您无忧上云