谈谈iOS开发过程中的坑

1,当把一个ViewController放到Navi中时候

以前在开发时候遇到过这种情况, 将一个UIScrollView放到一个UIViewController上去, 结果UIScrollView怎么也调不出来, 将UITableView放到一个UIViewController上有时候也会出现类似的问题; 或者另一种情况, 将一个View放到UIViewController上时候, 有时候view是以UIWindow的 (0, 0) 为起点的, 有时候是以UINavigation的底部为起点的, 就是(0, 64).

我认为, 之所以会出现这些奇葩的问题, 兴许是xCode的小bug吧, 但是有个最简单的方法, 可以用一行代码解决上面所有的问题:

[self.view addSubview:[[UIView alloc] init]];

不让UIScrollView的子类作为self.view的第一个子控件, 就可以完美解决上面出现的两个问题.

2, UITableView presentViewController 时候延迟

问题是这样解决的:

dispatch_async(dispatch_get_main_queue(), ^{
        [self presentViewController:viewController animated:YES completion:nil];
    });

加上上面的一句话, 意思就是将presentViewController这个方法放在主线程的任务中执行. 这样就会在点击之后马上执行.

直接通过点击按钮弹出模态窗口就不会出现这样的问题, 出现这样问题的原因, 我认为可能是模态的的实现原理和UIScrollView放在一起会产生一些冲突, 所以导致presentViewController方法并不能直接开始执行, 或者在等待完成所有的配置工作, 而配置工作完成后没有很好的机制唤起presentViewController的执行, 所以, 将presentViewController方法放在一个异步线程中, 放在当前主线程任务的末尾, 就可以正常执行.

3, UIScrollView中的坑

我把一个放着轮播图片的scrollView放到一个view上面, 结果, 显示的效果如下图所示. 我设置的scrollView的frame和它父view大小是一模一样的, 但是, 当设置scrollView的背景色时候, 发现他们大小还是一模一样的, 但是scrollView得可滑动区域, 竟然如下图竖直进度条所示, 进度条已经到最顶了, 图片还是可以在上面一部分显示, 可以左右滑动, 也可以上下小幅度的滑动.

解决: 一行代码[self addSubview:[[UIView alloc] init]];, 将scrollView放到view之前, 先在view上面放一个view, 就是不要让scrollView作为view的第一个子控件, 这样可以避免很多不必要的麻烦.

转载于:https://my.oschina.net/whforever/blog/615900

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值