之前在开发时候遇到过这种状况, 将一个UIScrollView放到一个UIViewController上去, 结果UIScrollView怎么也调不出来, 将UITableView放到一个UIViewController上有时候也会出现相似的问题; 或者另外一种状况, 将一个View放到UIViewController上时候, 有时候view是以UIWindow的 (0, 0) 为起点的, 有时候是以UINavigation的底部为起点的, 就是(0, 64).异步
我认为, 之因此会出现这些奇葩的问题, 兴许是xCode的小bug吧, 可是有个最简单的方法, 能够用一行代码解决上面全部的问题:async
[self.view addSubview:[[UIView alloc] init]];
不让UIScrollView的子类做为self.view的第一个子控件, 就能够完美解决上面出现的两个问题.spa
问题是这样解决的:线程
dispatch_async(dispatch_get_main_queue(), ^{ [self presentViewController:viewController animated:YES completion:nil]; });
加上上面的一句话, 意思就是将presentViewController这个方法放在主线程的任务中执行. 这样就会在点击以后立刻执行.code
直接经过点击按钮弹出模态窗口就不会出现这样的问题, 出现这样问题的缘由, 我认为多是模态的的实现原理和UIScrollView
放在一块儿会产生一些冲突, 因此致使presentViewController
方法并不能直接开始执行, 或者在等待完成全部的配置工做, 而配置工做完成后没有很好的机制唤起presentViewController的执行, 因此, 将presentViewController方法放在一个异步线程中, 放在当前主线程任务的末尾, 就能够正常执行.blog
我把一个放着轮播图片的scrollView放到一个view上面, 结果, 显示的效果以下图所示. 我设置的scrollView的frame和它父view大小是如出一辙的, 可是, 当设置scrollView的背景色时候, 发现他们大小仍是如出一辙的, 可是scrollView得可滑动区域, 居然以下图竖直进度条所示, 进度条已经到最顶了, 图片仍是能够在上面一部分显示, 能够左右滑动, 也能够上下小幅度的滑动. 图片
解决: 一行代码[self addSubview:[[UIView alloc] init]];
, 将scrollView放到view以前, 先在view上面放一个view, 就是不要让scrollView做为view的第一个子控件
, 这样能够避免不少没必要要的麻烦.开发