我可以把一个UIScrollView放入另一个UIScrollView
我有一个只能在垂直方向滚动的UIScrollView
,我需要放置可以水平移动的UIScrollView
,如苹果设备中的AppStore应用程序。 我不想给我们UICollectionView
因为我有静态数据,我只需要3个水平的UIScrollView
是的你可以。 由于UIScrollView
UIView
子类,因此添加子视图的行为将与预期一致。 每个滚动视图将启用基于其contentSize
属性的滚动。
Objective-C的:
UIScrollView *horizontalScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(40.0, 40.0, 300.0, 300.0)]; horizontalScrollView.backgroundColor = [UIColor lightGrayColor]; horizontalScrollView.contentSize = CGSizeMake(2000.0, 300.0); [self.view addSubview:horizontalScrollView]; UIScrollView *verticalScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(40.0, 40.0, 220.0, 220.0)]; verticalScrollView.backgroundColor = [UIColor greenColor]; verticalScrollView.contentSize = CGSizeMake(220.0, 2000.0); [horizontalScrollView addSubview:verticalScrollView];
迅速:
let horizontalScrollView = UIScrollView(frame: CGRectMake(40.0, 40.0, 300.0, 300.0)) horizontalScrollView.backgroundColor = UIColor.lightGrayColor() horizontalScrollView.contentSize = CGSizeMake(2000.0, 300.0) self.view.addSubview(horizontalScrollView) let verticalScrollView = UIScrollView(frame: CGRectMake(40.0, 40.0, 220.0, 220.0)) verticalScrollView.backgroundColor = UIColor.greenColor() verticalScrollView.contentSize = CGSizeMake(220.0, 2000.0) horizontalScrollView.addSubview(verticalScrollView)
是的你可以。 但是您需要区分滚动视图委托方法中的滚动视图。 要么你可以使用标签,或者如果你在整个类中声明它们是全局variables,你可以直接用它们的名字来访问它们。例如:
UIScrollView *parentScrollView = [[UIScrollView alloc] init]; parentScrollView.delegate = self; [self.view addSubview:parentScrollView]; UIScrollView *childScrollView = [[UIScrollView alloc] init]; childScrollView.delegate = self; [parentScrollView addSubview:childScrollView];
现在在委托方法中,你可以检查滚动视图
if(scrollview == parentScrollview) { // do your actions }
这只有当你的滚动视图对象是类的全局时才有可能。 你也可以给一个标签,并检查滚动视图委托方法中的标签
parentScrollView. tag = 101;
并在滚动视图委托方法
if(scrollview.tag = 101) { // do your actions }
是的,这是可能的,但你必须维护滚动视图的标签来处理滚动视图的委托方法。
UIScrollView有一个名为scrollEnabled
的属性,您可以将其设置为NO以禁用父滚动视图中的滚动。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { if(scrollView == innerView) outerView.scrollEnabled = NO; else outerView.scrollEnabled = YES; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { if(scrollView == innerView) { if(innerView.contentOffset.x + innerView.frame.size.width == innerView.contentSize.width) { outerView.scrollEnabled = NO; } else { outerView.scrollEnabled = YES; } } }
否则,你可以通过下面的链接 。
- 如何在非基于文档的应用程序上集成iCloud?
- 这代码是什么意思,“404 =未find; 404; -32601” ? 在joinKurento媒体服务器中的一个房间时发生这种情况
- UICollectionViewCell systemLayoutSizeFittingSize返回不正确的宽度
- 用UISwitch显示和隐藏UITableViewCell过快崩溃
- 如何使用Objective c在iOS 9.3中添加animation来启动屏幕
- imageWithContentsOfFile vs imageNamed(imageWithContentsOfFile返回低质量图像)
- 如何有效地在iOS项目中添加iOS框架
- AudioQueue如何查找排队数据的播放长度
- 在提取请求中使用NSPredicate的内存泄漏来获取NSManagedObject