在弹出框内滚动 tableview 会创建一个工件

Posted

技术标签:

【中文标题】在弹出框内滚动 tableview 会创建一个工件【英文标题】:Scrolling a tableview inside a popover creates an artifact 【发布时间】:2012-06-14 01:48:31 【问题描述】:

如果您查看标题为“地址”的按钮/标签,您会注意到角落里有一点白色。只有当用户开始滚动位于搜索栏下方的 tableView 时,才会出现这种白色斑点。

我只能猜测模态边框会在滚动时杀死所有透明胶片。

【问题讨论】:

如果你已经在 XIB 中定义了你的用户界面,你能否缩小 table view 的高度,使 table view 的顶部边缘只接触底部边缘搜索栏? 我在我的界面中也看到了这一点。不过不知道如何解决。 我尝试将所有视图向下移动并将某些属性应用于所有视图,我在与 David 下面的对话中更深入地谈到了这一点,这就是我在拖动表i.imgur.com/4sLkP.png Perlexing 【参考方案1】:

这是一个关于滚动视图的 ios 问题,在很多地方都可以看到 - 除了为 tableview 减少或创建一些偏移之外,没有其他解决方案。

【讨论】:

【参考方案2】:

这个伪影可能是由多种不同的事情造成的。当看到这些东西时,我首先要检查的是所有与该区域重叠的 UIView(以及子视图)

A.具有 alpha 值为 0 的背景颜色

B.在 Interface Builder 中关闭“Cear Graphics Context”(或代码中的相应标志)

【讨论】:

我不清楚使背景颜色的 alpha 为零。您的意思是将视图的 alpha 设置为零吗?我不认为这就是你的意思,因为这会使视图完全透明。 - (void)makeBackgroundWhite:(UIView *)view view.backgroundColor = [UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1.0f]; for(UIView *subview in view.subviews) if(subview.subviews.count) [self makeBackgroundWhite:subview]; 我做了一个递归函数,将控制器中的所有 uiviews 设置为 [UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1.0f];但不幸的是它没有工作。 我在您的 makeBackgroundWhite 函数中看到您将 alpha 设置为 1.0。它应该是 0,所以它是透明的:你不想要背景颜色(但显然你不想将 UIView.Alpha 设置为 0,否则一切都将不可见。) - (void)makeBackgroundWhite:(UIView *)view view.backgroundColor = [UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.0f]; view.opaque = 否; view.clearsContextBeforeDrawing = 否; for(UIView *subview in view.subviews) if(subview.subviews.count) [self makeBackgroundWhite:subview];

以上是关于在弹出框内滚动 tableview 会创建一个工件的主要内容,如果未能解决你的问题,请参考以下文章

iOS:关闭使用界面生成器生成的弹出框,并在弹出框内使用按钮

弹出框滑动,底部不跟着滑动

如何检测 UIScrollView 何时变为可滚动?

弹出框内的 UITableView 宽度

easyui打开dialog后给弹出框内输入框赋值问题

选择器作为弹出框内的输入视图