- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在实现一个非常基本的刷新控件...
var refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: Selector(("refresh:")), for: UIControlEvents.valueChanged)
refreshControl.backgroundColor = UIColor.red
self.tableView.addSubview(refreshControl)
出于某种原因,尽管每当我下拉刷新时,刷新控件似乎无法跟上表格 View ,并且两者之间存在白色间隙。
这是模拟器上的问题...我相信在 iPhone 上更糟
最佳答案
虽然我也建议您按照 Artem 发布的内容进行操作,但它并没有直接为我消除差距。原来我遇到了 2 个与 UIRefreshControl
相关的不同问题,并找到了一些“hacks”来绕过它们。简单的解决方法是将 tableView 的背景颜色设置为与刷新控件相同的颜色,但这样做的副作用是在 table view 的底部看到相同的颜色。
我的设置是一个 UINavigationController
托管一个 UIViewController
,一个 UITableView
subview 和一个 UISearchBar
设置为tableView 的 tableHeaderView。我的目标是匹配导航栏、刷新控件和搜索栏的颜色。
我认为这与您遇到的问题相同。似乎只要您拖动以启动拉动以刷新操作,在手势的前几个点就会出现间隙。在某个阈值之后,刷新控件变为正确的颜色。不过,在返回 TableView 的静止滚动状态的途中,我们再次看到相同的间隙,就在它到达内容偏移量 0 之前。这是它的样子:
如果您将 UIRefreshControl
子类化并覆盖 frame
和 isHidden
属性,并在设置它们时打印出它们的值,您会注意到直到与 TableView 顶部的距离为 4pt 时,刷新控件才真正取消隐藏。同样,当您向下滚动时,您还会看到它被设置为隐藏在同一位置周围,这是在您无法再看到刷新控件之前以及为什么我们看到缝隙偷看 tableView 背景之前。
在我们的子类中,我们可以通过覆盖 isHidden
的 setter 和 getter 以及 frame 的
仅在刷新控件的偏移量实际为 0 时隐藏。didSet
来防止这种“提前”隐藏和“延迟”取消隐藏
class RefreshControl: UIRefreshControl {
override var isHidden: Bool {
get {
return super.isHidden
}
set(hiding) {
if hiding {
guard frame.origin.y >= 0 else { return }
super.isHidden = hiding
} else {
guard frame.origin.y < 0 else { return }
super.isHidden = hiding
}
}
}
override var frame: CGRect {
didSet {
if frame.origin.y < 0 {
isHidden = false
} else {
isHidden = true
}
}
}
}
我称之为 hack,因为我不太喜欢修改 UIRefreshControl 的现有行为,但我还没有找到更好的方法来解决这个问题。
在问题 1 中拉动刷新超过该间隙阈值时,UIRefreshControl 的框架似乎跟不上搜索栏。这给了我们另一种跟随搜索栏的差距。这是它的样子:
这个滞后的差距看起来像帧没有像我们滚动一样快地更新甚至动画。事实证明,如果我们在类似 layoutSubviews
的地方将框架设置为自身,我们会得到以下行为:
override func layoutSubviews() {
super.layoutSubviews()
var originalFrame = frame
frame = originalFrame
}
同样,这很老套,但我也没有找到解决这个问题的不同方法。
关于ios - 拉动时 UIRefreshControl 下面的白线.. tableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41331691/
我有一个包含 5 个选项卡的选项卡栏,每个选项卡都包含一些数据。当用户下拉刷新时,我想显示一个刷新指示器,并且选项卡内的数据应该通过 API 调用进行更新。下面是我到目前为止尝试过的代码。 帮助我了解
我正在尝试使用 CollapsingToolbarLayout 和 AppBarLayout 底部的其他 View 来创建以下行为,但是当我滚动时栏没有折叠/展开/拉动 PullView,这意味着在使
我正在尝试在 React Native 中构建类似于 IMessage 和 WhatsApp 标题的内容,用户可以向下拉以显示标题中的搜索栏。 我已经能够向下拉以显示隐藏的输入,但由于 ScrollV
我希望让我的页面具有响应性,添加了 Bootstrap 并将我的两个 div 排成一行,放在一个流体容器中。 我尝试向左按钮添加向右拉/向右浮动,向右图像向左拉/向左浮动,但它们没有移动。 我没有使用
如何使用简单的饼图从下面的 s:variant 块中获取标题标签? product_variants-96590662 Default Title 10.00 002 0 我已
我已经编写了一些代码,使用 Instagram 图形 API 从 Instagram 中提取图像。一切工作正常,但性能很慢。我正在使用 JavaScript,但也遇到了同样的问题,但使用 PHP 时情
我是一名优秀的程序员,十分优秀!