首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子视图滚动不起作用

子视图滚动不起作用
EN

Stack Overflow用户
提问于 2016-08-08 17:54:48
回答 2查看 1.5K关注 0票数 8

目标:为了使一个视图控制器具有多个页面,并且可以通过分段控制器交换,页面内容可以垂直滚动。

详情:

  • 我制作了一个分页控制器,并将它作为主视图的子视图嵌入其中。 //如果让vc = storyboard?.instantiateViewControllerWithIdentifier("ProfileEditController"){ self.addChildViewController( vc ) self.view.addSubview(vc.view) EditTabs =vc!EditTabs.setViewControllers(pagesAtIndexPath(0)!,UIPageViewController EditTabs.dataSource = self EditTabs.delegate = self //define direction:.Forward,动画: true,completion: nil) EditTabs.didMoveToParentViewController(self) //将分段视图按钮放到pageViews self.view.bringSubviewToFront(self.topTabs) }前面
  • 我调用了pageViewController函数,并通过恢复标识符添加页面
  • 我通过获取页面索引和设置视图控制器来管理分段视图控制器: EditTabs.setViewControllers(pagesAtIndexPath(0)!,direction:.Reverse,动画:真,完成:零)
  • 在故事板中,子页面内部有滚动视图来保存内容。
  • 我测试了子页滚动视图,方法是通过segue调用它并使其正常工作。

案件:

  • 所有工作都很好,只有子页的滚动视图根本不工作。

如何解决这个问题?您的指导方针将不胜感激。

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2017-05-09 19:15:17

  1. 我用PageViewController创建了一个视图控制器,其中有三个视图控制器,其中有滚动视图。效果很好。 导入UIKit类ViewController: UIViewController,UIPageViewControllerDataSource { viewControllers : UIViewController?重写func viewDidLoad() { super.viewDidLoad() CreatePageView() } func CreatePageView() { SetupViewControllers()让pageViewController = UIPageViewController(transitionStyle:.scroll,navigationOrientation:.horizontal,options: nil) pageViewController.dataSource = self super.viewDidLoad,方向:.forward,动画: false,完成:0) pageViewController.view.frame = CGRect(x: 0,y: 0,宽度: view.frame.size.width,身高: view.frame.size.height);pageViewController.view.frame = CGRect(x: 0,y: 0,宽度: view.frame.size.width,高度: view.frame.size.height);pageViewController.didMove(toParentViewController: addChildViewController(pageViewController) view.addSubview(pageViewController.view) pageViewController.view.backgroundColor = UIColor.blue } func SetupViewControllers() { let firstVC = UIViewController() firstVC.view.tag = 100 firstVC.view.backgroundColor = UIColor.red AddScrollView(bgView: firstVC.view) let secondVC ()= 101 =en21#(:))设thirdVC = UIViewController() thirdVC.view.tag = 102 thirdVC.view.backgroundColor = UIColor.purple AddScrollView(bgView: thirdVC.view) viewControllers = firstVC,secondVC,thirdVC } func AddScrollView(bgView: UIView) { let scrollView = UIScrollView() scrollView.frame = CGRect.init(x: 10,y: 10,宽度:bgView.framework-20,高度:bgView.framework.身高-20) scrollView.backgroundColor =UIColor.init(红色: 0.34,绿色: 0.45,蓝色: 0.35,alpha: 0.9) bgView.addSubview(scrollView) scrollView.contentSize =CGSize.init(宽度: scrollView.frame.size.width,高度: scrollView.frame.size.height+200) } func pageViewController(_ pageViewController: UIPageViewController,viewControllerBefore viewController: UIViewController) -> UIViewController?viewControllerAfter viewController: UIViewController) -> UIViewController?{ if viewController.view.tag == 101 {返回viewControllers?}否则,如果viewController.view.tag == 102{返回视图控制器?1}其他{返回视图控件?2} func presentationCount(代表pageViewController: UIPageViewController) -> Int { return (viewControllers?.count)!} func presentationIndex(用于pageViewController: viewControllers?.count)UIPageViewController }
票数 5
EN

Stack Overflow用户

发布于 2017-05-10 07:03:22

类似的问题经常在Stack上提出。对于我自己的问题,在非常类似的情况下,我也可以在它自己的视图中使用滚动视图,但是当在另一个子视图中用作子视图时,我需要编程地设置滚动视图维度。

Swift 2

scrollView.setFrame(CGRectMake(0, 0, DEVICE_WIDTH, DEVICE_HEIGHT))

Swift 3

scrollView.setFrame(CGRect(x: 0, y: 0, width: DEVICE_WIDTH, height: DEVICE_HEIGHT))

另一个(通常被认为是更好的)建议,根据内容自动设置大小。

代码语言:javascript
运行
复制
var contentRect = CGRectZero
for view in self.scrollView.subviews {
    contentRect = CGRectUnion(contentRect, view.frame)
}
self.scrollView.contentSize = contentRect.size 

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38835618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档