就这样,我有一个UIVIEwController,在其中我有一个ContainerVIEw嵌入一个UItableVIEwController.我想要的高度是屏幕的50%.
当我使用refreshControl时,我得到这样的行为:The tableView jumps down at the very end when scrolling down. You’ll notice it towards the end of this video when I decide to scroll down slowly.
当ContainerVIEw框架高于某个值时,不会发生此问题.所以,当高度是屏幕的75%时,一切都可以完美地实现,并且refreshControl很顺利.当它是50%时,那个BUG就会发生.
我试过的两件事情
> self.tableVIEw.frame = CGRectMake(0,numOfPixelsToDroptableBy,self.tableVIEw.frame.size.wIDth,self.tableVIEw.frame.size.height)是我尝试的一件事.这样做的问题是如果要通过ContainerVIEw给出tableVIEw圆角,并且事实上,您的ContainerVIEw仍然占用更多的空间,这会使其他元素的约束变得尴尬.
>我去了故事板,我基本上是我想要的ContainerVIEw的顶部.然后,我的底部扩展到屏幕底部,给了ContainerVIEw足够大的高度,但用户永远不会知道.除了他们会知道,因为现在tableVIEw延伸到屏幕之外,我看不到我的tableVIEw的最后几行.
最终…我不想使用第三方库,但我想要一个完美的功能refreshControl.如何解决这个问题?
解决方法 我设法重创了你的问题,意外地设法解决了这个问题,但费用是没有任何利润.如果您使用基于边界的约束或您的容器视图的任何种类的边距,跳跃似乎就会发生.如果删除边界相对于约束的一部分,则跳跃消失.
很奇怪,但似乎是问题.一旦为容器添加任何边距相对约束,问题就会返回.将其移除并显示回到平滑滚动.
这似乎是一个错误,我认为你将需要提出一个与苹果的错误报告.
更新:
再看一遍,一旦容器视图不是屏幕的整个宽度,问题似乎就会出现.向容器视图添加任何类型的边距(通过相对于边距的布局或通过在约束上设置非零偏移)导致跳跃行为.
更新:
UItableVIEw在容器视图内滚动显示的东西似乎有根本的区别,容器视图有任何边缘.如果您覆盖滚动委托,滚动视图的内容偏移/边界将在刷新即将触发的时刻更改.这是一些调试显示问题
Start pulling down:Scroll bounds = {{0,-127.33333333333333},{374,423}}Scroll pos = [0.000000,-127.333333]Scroll bounds = {{0,-127.66666666666667},-127.666667]Scroll bounds = {{0,-128.33333333333334},-128.333333]Ok before here ------->Activity spinner becomes fully populated. Jump in scroll position upwards.Scroll bounds = {{0,-104},-104.000000]Scroll position corrects itselfScroll bounds = {{0,-128.333333]Scroll position jumps the other direction by the same amountScroll bounds = {{0,-151.33333333333334},-151.333333]Value changed target action fires. Bounds seem to reset (think 44 is height of refresh controlScroll bounds = {{0,-44},-44.000000]Corrects backScroll bounds = {{0,-151.333333]Fully corrects to the right scroll position by jumPing back.Ok after here ------>Scroll bounds = {{0,-128.66666666666666},-128.666667]Scroll bounds = {{0,-129},-129.000000]Scroll bounds = {{0,-129.33333333333334},-129.333333]Scroll bounds = {{0,-129.66666666666666},-129.666667]Scroll bounds = {{0,-130},423}}
结论
似乎没有简单的方法可以找到解决这个问题.我试图创建我自己的表视图控制器,跳跃消失,但被不同的效果所替代:当您向下滚动顶部单元格消失时,然后重新出现.我想象它与同样的内部问题有关,只是表达不同.
不幸的是,你可能不得不忍受这种效果,或者没有余地.我会提出一个与苹果的错误报告.
只有其他选项才能在您的UItableVIEwCells中创建边距.您可以使单元格内容视图具有清晰的背景,并使用内部容器视图为单元格内容向单元格引入左右边距.我认为这可能是你最好的机会.
最后…
不要被击败,您可以将缩放变换应用于表视图的导航控制器,以在表视图控制器中创建一个执行以下 *** 作的余量:
overrIDe func vIEwWillAppear(animated: Bool) { super.vIEwWillAppear(animated) // Add a scaling transform to the whole embedded controller vIEw. self.navigationController!.vIEw.transform=CGAffinetransformMakeScale(0.9,0.9);}
这使得嵌入式控制器的视图看起来比90%更小,因此在边框周围有一个边距.将刻度更改为更改边框大小.
不理想,但完美无瑕,无跳转,有边框.它也使您完全免费使用圆角等,因为整个内容被缩放.
总结以上是内存溢出为你收集整理的当UITableViewController frame.height很小时,ios – UITableViewController refreshControl会出现故障全部内容,希望文章能够帮你解决当UITableViewController frame.height很小时,ios – UITableViewController refreshControl会出现故障所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)