【问题标题】:How to add and delete a view in UIscrollview at runtime?如何在运行时在 UIscrollview 中添加和删除视图?
【发布时间】:2011-10-03 13:16:08
【问题描述】:
我的项目需要在运行时向uiscrollview添加和删除一个uiwebview。意味着,当我们在启用分页时水平滚动它(向左或向右)时,一个新视图会被添加到 uiscrollview 并遍历它。
uiscrollview中是否可以检测到左右滚动?
请告诉我最好的解决方案、示例代码或任何教程。
提前致谢
【问题讨论】:
标签:
cocoa-touch
uiwebview
uiscrollview
horizontal-scrolling
【解决方案1】:
在这种情况下,我们应该在滚动视图中启用分页。
假设您有大小为 320x480 的滚动视图,它应该显示 10 个页面,其中每个页面的大小为 320x480,使滚动视图的内容大小为 320*10 x 480。
确定当前页面的最佳方法是使用滚动视图的内容偏移值。
所以,一开始,当滚动视图显示第一页时,它的内容偏移量将是 x=0,y=0。
对于第二页 x=320,y=0。
因此,我们可以通过将 contentOffset.x 除以 page-width 来获得当前页面值。
因此,0/320 = 0,表示第一页。 320/320 = 1,表示第二页,以此类推。
因此,如果我们有当前页面值,我们可以确定滚动视图正在向哪个方向移动,如下所示:
-(void) scrollViewDidScroll:(UIScrollView *)scrollView{
int currentPageOffset = currentPage * PAGE_WIDTH;
if (self.pageScrollView.contentOffset.x >= currentPageOffset + PAGE_WIDTH) {
// Scroll in right direction. Reached the next page offset.
// Settings for loading the next page.
currentPage = self.pageScrollView.contentOffset.x/PAGE_WIDTH;
}else if (self.pageScrollView.contentOffset.x <= currentPageOffset - PAGE_WIDTH) {
// Scroll in left direction. Reached the previous page offset.
// Setting for loading the previous page.
currentPage = self.pageScrollView.contentOffset.x/PAGE_WIDTH;
}
}