之前面试遇到了一个问题: 长按到UIButton时,UITableView滑动不了,有遇到过么?(怎么解决?) 估计是当前面试官描述的不够清楚,然后我没有印象,也没理解他说的是什么。...但其实肯定是遇到过的,只是没有引起我的重视。 以下是解决办法: 1、无法滑动的问题 当点击到TableViewCell上的Button时,就无法滑动TableView。...解决的办法是:自定义一个TableView继承自UITableView,并重写以下方法: override func touchesShouldCancel(in view: UIView) -> Bool...{ return true } 2、highlight效果延迟问题: 当UIButton被添加在UITableViewCell上时,它的高亮状态切换会延时。...解决的办法是:将tableView的delaysContentTouches设置为false tableView.delaysContentTouches = false
文章的标题已经表明了,我想提一个简单的问题,播放视频的时候我觉得视频的声音太大或者太小了,我想调整一下声音,怎么办? 我想大多数同学想笑了,这是一个问题吗?...通过上面简单的分析,我们已经知道声音的音量实际上就是由声波的振幅决定的,我们需要调整声波的振幅。...我们需要在解码出音频数据之后,操作解码之后的音频帧数据,调整振幅,然后将得到的数据输出,渲染播放即可满足要求。...下面的代码中volumeFlag表示调整振幅的系数,例如我想将声音的振幅调整为原始的1.2倍,那么volumeFlag就是1.2 private void scaleSamples(short samples...平均分贝:计算音频的每一帧数据的分贝,输出平均分贝 标准分贝:当前情况下多少分贝是最合适的分贝 平均分贝我播放器肯定是无法获知的,视频没有播放完成,我们无法获知,但是服务器知道,可以传到客户端,那么分贝这振幅系数之间如何换算
滑动列表时收起键盘 一般列表都会伴随着搜索框或其他输入框,我们在输入时弹出键盘,但是滑动列表时就表示我已经输入完毕了,不希望键盘保持在界面上,而是自动收起,同样是在TableView的Delegate方法中实现...7 中viewcontroller新增了属性automaticallyAdjustsScrollViewInsets,即是否根据按所在界面的navigationbar与tabbar的高度,自动调整scrollview...,而不需要用户点击,也不希望用户点击,虽然上面第二条可以设置点击后取消选中,但是还是会有一个动画效果存在,这个方法可以让点击彻底没有效果,明确地告诉用户不能点击列表: [cell setSelectionStyle...:UITableViewCellSelectionStyleNone]; 6、根据indexPath获取对应的cell 我们想要获取或者修改cell中的信息时,往往需要获取cell,在tableview...label显示的内容是根据文字长度变换label高度的,这时我们不能单单变换label的高度,还要相应的改变cell的高度,才能正确地显示内容,通过以下方法动态地设置cell高度: // 首先根据内容修改
cell的高度: //根据博文的内容调整cell的高度 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath...需求难点: 1.cell的高度根据本博文和转发博文的多少而改变,就是在cell中有两部分内容的高度是变化的,需要用代码来动态控制其高度。...,然后在点击按钮的时候我们知道是那个Cell的那个button被点击了。 ...(2)难点在于我们如何判断被点击的按钮位于那个cell上。这个得用block回调来解决问题啦。 ...a.在我们Cell的类中需要定义一个block块的类型变量,用于在TableViewController中回调使用,在block回调时,我们就可以把那个Cell以及Cell中被点击的按钮传到TableViewController
在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦。...点击播放按钮,会播放录制的音频,cell的大学会根据内容的多少来调整,而cell中textView的高度是通过约束来设置的。 ? ...,通过ContentSize来调整ToolView的高度约束,代码如下: 1 //更新toolView的高度约束 2 -(void)updateHeight:(CGSize)contentSize...void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 14 { 15 //在ImagePickerView中点击取消时回到原来的界面...Cell的高度,代码如下: 1 //调整cell的高度 2 -(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath
点击button的时候,发送事件就可以处理了。 3、cell的点击处理还可以用下面的这个didSelectRow来处理。...*/ self.tableView.didSelectRow = ^(id viewModel, NSString *sectionKey) { // 点击事件在这里处理...任何的修改都可以在一个地方完成。 集成了table view的分隔线,可以任意调整分隔线。section的第一条和最后一条分隔线可以分开设置。...如果不用路由,如果cell上有个button什么的,点击要处理,可以在cell的view model里面声明对应的RACSignal。再进行订阅。点击button的时候,发送事件就可以处理了。... @required; /** 返回cell的高度, 这个方法是在view model中实现,view model中有cell的全部数据,所以这里可以通过数据计算高度,或者直接返回固定高度
但是这种方式在cell有点击效果的时候,会很明显的看出有分层,因为这时候cell是被点击的,contentView都会有系统点击的阴影效果。...这种方式在cell左滑删除,置顶等操作的时候,左滑出的视图会高出一部分(左滑显示出的高度=(cell的高度-留下的间距高度)+ 留下的间距高度),很显然这种方式有致命缺陷。...:(NSIndexPath *)indexPath { return 100;} 但是呢,这还是会出现一个问题,因为系统默认分组的时候每组的Header会停留在tableview的顶部,这要怎么处理呢...- tableview.frame.size.height - sectionFooterHeight), 0); } } } 优雅的方式 其实优雅的也是最简单的方法是直接让...这种方式只需要重写cell的setFrame方法即可 -(void)setFrame:(CGRect)frame { frame.origin.x = 10;//这里间距为10,可以根据自己的情况调整
div,用于确定 tableView 的位置,在监听到webView.scrollView.contentSize变化后,不断调整tableView的位置,同时将该div的尺寸设置为tableView的尺寸...tableView的最大高度为屏幕高度,当内容不足一屏时,高度为内容高度。 方案3(推荐): webView作为tableView的Header, 但不撑开webView。...webView的最大高度为屏幕高度,当内容不足一屏时,高度为内容高度。和方案2类似,但是不需要插入占位Div。...tableView.contenSize; webView和tableView的最大高度为一屏高,并禁用scrollEnabled=NO,然后根据scrollView的滑动偏移量调整webView和tableView...的ContentSize变化,调整父scrollView.contentSize、WebView和tableView的高度位置、展示区域 - (void)updateContainerScrollViewContentSize
DLSlideView - DLSlideView对常见的顶部Tab页点击,滑动分页做了封装。...类似美团的下拉菜单 - 类似美团的下拉菜单,源码推荐说明。 类似美团的下拉选项 - 类似于美团,大众点评的下拉菜单选项,code4app代码,评论代码有瑕疵。...SwiftTweaks - 不用重新编译即可调整UI配置(按钮颜色,背景,动画延迟,简单布局等)的解决方案库。实现了发布生产版本前UI的简单配置,省却了反复调试代码的麻烦。 Tweats。...KYAnimatedPageControl - 除了滚动视图时PageControl会以动画的形式一起移动,点击目标页还可快速定位。支持两种样式:粘性小球和旋转方块。...UIViewXXYBoom.swift - 一个炫酷好玩的爆炸效果,如何实现这个效果。
但在某些时候我们必须通过手动创建TabbarController,这样就必须知道在不使用模板时应该如何去做。 ...这样当用户点击 cell 时看起来会好一些,因为此时cell的背景为蓝色。 拖一个 ImageView 到cell 右端,紧靠着右箭头。调整它宽度为81,高度无所谓。...在设计自己的TableViewCell 时,你需要注意一些地方。首先,你应当设置Label 的 Highlighted Color(高亮色) ,以便用户在点击表格行时感觉更好。 ...Label 的 Autosizing 设置如下,因此当 cell 尺寸改变时,Label 的尺寸也随之变化: 经过这些调整,删除按钮的出现会将星级图标挤到左边: 你也可以在删除按钮出现时让星星们消失...通过 AutoLayout 可以实现运行时根据设备实际屏幕大小调整控件位置和大小。 4.2 代码实例化故事板中的VC 如何装载Storyboard中的ViewController?
所以如何优美地实现一个TableView界面,就成了iOS开发者的必备技能。...TabeView结构简单时还好,但当它相对复杂时,比如存在多种TableViewCell,实现时很容易出现界面逻辑混乱,代码冗余重复的情况。...可以想象,如果界面需求发生变化,调整行数或将某个cell的位置移动一下,修改成本是非常大的。...【3】创建好 cell的点击事件。...中cell的点击事件。
课题一:如何计算Cell高度 方案一:直接法(面向对象) 想知道妹纸爱你有多深?直接去问妹纸本人吧! 嗯!Cell也是一样的,想知道cell到底有多高?直接问Cell本人就好了。...第一步:创建Cell并正确设置约束,使文字区域高度能够根据文字内容多少自动调整 第二步:再给这个Cell添加点别的东东,就叫这个东东BottomCub了。为Cub添加好约束。...也就是说,只要知道文字区域的高度、图片区域的高度,就可以硬生生计算出Cell的高度了。...// 一个Cell由两部分组成 - 高度自动调整的Label & bottomCub // bottomCub高度是确定的 - 120,Label和bottomCub之间的间距是确定的...那么,在哪里能拿到Cell和Cell的高度呢? - 当然是CellForRow代理方法中啦! 但是,在CellForRow中拿到Cell高度后,如何传递给heightForRow代理方法呢?
EasyPlayer播放器是TSINGSEE青犀视频维护的一个RTSP播放器项目,EasyPlayer遵循了标准流媒体码流协议,进行实时播放以及码流录制,在数据流的播放速度以及画质的解码显示上均做了大量深度的优化...在网页通过EasyPlayer播放flv的H.265时出现了两个flv请求: image.png 第一次创建播放器过程中对码流进行播放和解析。...如果H.264则继续正常播放,当码流为H.265则需要销毁播放器,重新创建支持能播放H.265的播放器。...1 : 0) } }) } }, 由于在@easydarwin/easyplayer 3.3.12并没销毁之前的播放才导致一直加载两路flv流。...对此问题,在之后的版本我们已经优化了这个bug,EasyPlayer播放器已开源,如果大家对EasyPlayer播放器感兴趣,欢迎测试。
关于 ZHTableViewGroup 的设计之路 关于ZHTableViewGroup思想如何产生 之前复杂的页面不用表格要对于小屏幕做适配添加滚动 需要可以滚动的试图无非就是 UIScrollView...Cell 的高度 /// 获取 cell 的高度 /// /// - Parameters: /// - dataSource: ZHTableViewDataSource...} else { return height // 返回用户提前设定的固定高度 } } 点击 Cell public func tableView(_ tableView...: UITableView, didSelectRowAt indexPath: IndexPath) //点击 Cell /// 点击 cell /// /// - Parameters...return } let cell = cellForRowAt(dataSource: dataSource, indexPath: indexPath) // 获取点击的
如何定制不同 Cell 的 UI、如何与用户交互、如何与服务器端数据同步、如何在滑动时最大限度保证界面的流畅,这些都是考察的要点,是一个 iOS 工程师必备的基本技能。...UI 如何 。...UICollectionViewDelegate 用来处理交互:例如设置点击、高亮某个 item 对应的操作。它所有的方法都是可选方法,有默认实现。...(at: [indexPath], with: .automatic) default: break } } } 注意,移动和删除操作必须在 tableView 进入编辑模式时才能进行操作...可以用 GCD 多线程操作将复杂的计算放到后端线程,并进行缓存。例如布局计算或是非 UI 对象的创建和调整就可以如此操作。Linkedin 推出的 LayoutKit 就是很好的例子。 第三个问题。
内容包括五个部分:问题的原因分析、adjustContentInset属性的计算方式、什么情况下的tableView会发生内容下移、有哪些解决方法、解决这个问题时遇到的另外一个小问题。...原因分析 原因是iOS 11中Controller的automaticallyAdjustsScrollViewInsets属性被废弃了,所以当tableView超出安全区域时系统自动调整了SafeAreaInsets...因为系统对adjustedContentInset值进行了调整,所以导致tableView的内容到边缘的距离发生了变化,导致tableView下移了20pt(statusbar高度)或64pt(navigationbar...高度)。...当tableView的frame超出安全区域范围时,系统会自动调整内容的位置,SafeAreaInsets值会不为0,于是影响tableView的adjustContentInset值,于是影响tableView
做App原型设计,那么页面切换、进度条、页面滚动、图片轮播,下拉菜单,搜索框这些交互效果必不可少。如何简单快速地实现这些效果呢?以下小编根据经验为大家提供了一些简单的设计方法,以供参考。...a.点击按钮,将链接点拖至左边形状组件做交互。设置触发方式为点击,交互为调整尺寸并保持高度不变。在交互面板中加宽至右边形状的宽度。...在我们浏览这些移动端App时,最多的操作是什么?对,就是滚动页面。设计师在进行APP原型设计时,如何实现页面的滚动效果?其实,在一个滚动区里放几个组件就解决了?不信?不妨让我们一起看看如何操作吧!...Step 3:编辑时若滚动区放不下所展示内容或编辑区过大时,可点击下方滚动条”+”“-”进行调整。 Step 4:编辑完成后点击滚动区外部退出,根据演示区域调整滚动区所占区域大小。...Step 5:点击演示即可预览图片轮播效果。 5.下拉菜单 下拉菜单通常适用于在原型设计中陈列一些需要展示的子页面,相当于一个子导航菜单。这种交互效果一般适用于博客内容分类、电商网站商品陈列等情况。
最近在项目中经常用到UITableView中的cell中带有UITextField或UITextView的情况,然后在这种场景下,当我们点击屏幕较下方的cell进行编辑时,这时候键盘弹出来会出现遮挡待输入的...中的cell当有键盘弹出的时候表单整体会自动进行上移,我们需要编辑的区域正好可以在键盘的上方,这样我们正好也可以看到我们编辑的内容,方便我们进行修改和调整具体内容。 ...,开始编辑的时候返回当前cell相对屏幕的位置方便我们控制是否上移tableview,结束编辑时返回我们编辑框的内容方便进行记录。... 我们在对tableview的上移进行调整时,我们需要知道当前编辑的cell相对屏幕的位置,然后才能判断是否需要上移tableview以及上移多少。...,首先,我们再主控制器中定义几个属性来保存我们键盘弹出时tableview的contentOffset以及当前编辑cell的frame,然后在应用自定义cell时设定我们的两个回调block,当开始编辑时
我们 App 的脑袋会不会也长一刘海出来?Tabbar 会不会被圆角?先来看一下美团 App 的表现: ? 图1.1 启动时的 App 表现 ? 图1.2 下拉刷新之后的表现 ?...另外 WWDC 会议官方 App 的作者,也给出了适配时的一些经验。 我们来看看他们是怎么说的。 HIG部分 首先看一下各个机型尺寸的变化。 ?...解决方法是:可以通过调整 Tableview 的默认行为,改变 contentView 的属性(如上图 inset To SafeArea)来让 contentview 顶到边缘,弊端是会改变整个 cell...其实是当 Tableview 的 frame 超出了 safeArea 范围之后,系统会调整内容的位置。...当然还可以通过设置 tableview.contentOffset 来抵消这个值,但还是推荐第一种。 ④ “我的Tab” 导航栏上,右边那个按钮全都发生了偏移,导致无法点击。
领取专属 10元无门槛券
手把手带您无忧上云