UITableView 背后的交互式 UIView
Interactive UIView behind UITableView
我已经为一个 UIScrollView
相关问题苦苦挣扎了大约一个星期,坦率地说,我似乎无法解决它。
这是我要完成的:
- http://i.stack.imgur.com/q4aHK.jpg
- http://i.stack.imgur.com/Z7msM.jpg
- http://i.stack.imgur.com/SNinp.jpg
我希望 UITableView's
内容滑动到 LSWeekView
之上
在我的第一次迭代中,我通过将 LSWeekView
作为子视图添加到 UITableView
并将其固定在顶部,使一切正常。在最近进行一些更改之前,这确实非常有效。
UITableView
现在包含在 UIPageViewController
中,这使得用户可以从一天滑动到另一天。然后出现的问题是 LSWeekView
现在与 UITableView
一起滑动并且 LSWeekView
.
也有多个实例
到目前为止我尝试过的:
一个 UIView
,带有一个 LSWeekView
和一个 UITableView
(包含在 UIPageViewController
中)作为子视图。通过使用 UITableView 的委托方法 scrollViewDidScroll
:我能够调整原点 UITableView
。这个解决方案的问题是我必须覆盖 UITableView 的 contentOffset
以便它在调整原点时不会滚动。不幸的是,这给 UITableView
的 momentum/deceleration 引入了一些问题。
一个 UIScrollView
,带有一个 LSWeekView
和一个 UITableView
(包含在 UIPageViewController
中)作为子视图。通过子类化 UITableView 和 UIScrollView
我能够允许同时平移。但是我不得不再次覆盖 contentOffset
,以便 UITableView
在 UIScrollView
中平移时不会滚动,所以这个解决方案基本上也是同样的问题。
也许我想出的解决方案是可行的方法,我只需要通过应用我自己的减速等方法使它们工作。但是我觉得应该有更好的方法。
希望你们能帮助我回到正轨,提供一些解决方法。
这是一个更简单的方法,适用于我的类似需求。
将 LSWeekView 作为子视图添加到您的父视图。
将 table 视图也作为子视图添加到同一父视图,但在层次结构中位于 LSWeekview 之上。
设置 tableView 的 contentInset
[tableView setContentInset:UIEdgeInsetsMake(requiredHeight, 0, 0, 0)];
并将 tableView 的背景颜色设置为 clearColor。
干杯。
我最终在 UIPageViewController
之上添加了 LSWeekView
,然后在 UITableView
触发 scrollViewDidScroll:
时调整 LSWeekView
的大小。
布局子视图:
self.tableView.contentInset = UIEdgeInsetMake(100, 0, 0, 0);
scrollViewDidScroll:
CGRect frame = self.weekView.frame;
frame.size.height = 100 - scrollView.contentOffset.y;
if (frame.size.height < 0) {
frame.size.height = 0;
}
self.weekView.frame = frame;
感谢@NavinDev 的帮助。
我已经为一个 UIScrollView
相关问题苦苦挣扎了大约一个星期,坦率地说,我似乎无法解决它。
这是我要完成的:
- http://i.stack.imgur.com/q4aHK.jpg
- http://i.stack.imgur.com/Z7msM.jpg
- http://i.stack.imgur.com/SNinp.jpg
我希望 UITableView's
内容滑动到 LSWeekView
在我的第一次迭代中,我通过将 LSWeekView
作为子视图添加到 UITableView
并将其固定在顶部,使一切正常。在最近进行一些更改之前,这确实非常有效。
UITableView
现在包含在 UIPageViewController
中,这使得用户可以从一天滑动到另一天。然后出现的问题是 LSWeekView
现在与 UITableView
一起滑动并且 LSWeekView
.
到目前为止我尝试过的:
一个
UIView
,带有一个LSWeekView
和一个UITableView
(包含在UIPageViewController
中)作为子视图。通过使用 UITableView 的委托方法scrollViewDidScroll
:我能够调整原点UITableView
。这个解决方案的问题是我必须覆盖 UITableView 的contentOffset
以便它在调整原点时不会滚动。不幸的是,这给UITableView
的 momentum/deceleration 引入了一些问题。一个
UIScrollView
,带有一个LSWeekView
和一个UITableView
(包含在UIPageViewController
中)作为子视图。通过子类化 UITableView 和UIScrollView
我能够允许同时平移。但是我不得不再次覆盖contentOffset
,以便UITableView
在UIScrollView
中平移时不会滚动,所以这个解决方案基本上也是同样的问题。
也许我想出的解决方案是可行的方法,我只需要通过应用我自己的减速等方法使它们工作。但是我觉得应该有更好的方法。
希望你们能帮助我回到正轨,提供一些解决方法。
这是一个更简单的方法,适用于我的类似需求。
将 LSWeekView 作为子视图添加到您的父视图。 将 table 视图也作为子视图添加到同一父视图,但在层次结构中位于 LSWeekview 之上。 设置 tableView 的 contentInset
[tableView setContentInset:UIEdgeInsetsMake(requiredHeight, 0, 0, 0)];
并将 tableView 的背景颜色设置为 clearColor。
干杯。
我最终在 UIPageViewController
之上添加了 LSWeekView
,然后在 UITableView
触发 scrollViewDidScroll:
时调整 LSWeekView
的大小。
布局子视图:
self.tableView.contentInset = UIEdgeInsetMake(100, 0, 0, 0);
scrollViewDidScroll:
CGRect frame = self.weekView.frame;
frame.size.height = 100 - scrollView.contentOffset.y;
if (frame.size.height < 0) {
frame.size.height = 0;
}
self.weekView.frame = frame;
感谢@NavinDev 的帮助。