首页 > 代码库 > iOS 开发中的坑与相关技巧

iOS 开发中的坑与相关技巧

1、 界面切换部分: 当一个界面中不包含NavigationBar的时候但是要其跳转到另一个包含NavigationBar的界面的情况下,要进行NavigationBar的展示和隐藏的情况下设置不同的界面的逻辑,此时设置的不当的话会造成侧滑切换界面的间隙会造成NavigationBar的标题栏的短暂隐藏,所以在控制其隐藏的时候需要注意一下,可以在需要隐藏的界面做以下设置:

- (void)viewWillAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    [super viewWillAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewWillDisappear:animated];
}

   界面展示部分: 当应用中集成了连通视频的功能时,当连通了视频之后会导致整个界面下降20个像素如下图1.1所示:

技术分享

      图1.1

其展示场景为:当由主界面跳转到连接视频的界面时,跳转方式采用presentViewController 的形式,当视频连通后再返回主界面就会造成了上述情况。

原因:连通视频后voiceIP的连通使得界面向下偏移,通过采用

[self.webView.scrollViewsetContentInset:UIEdgeInsetsZero];等一些针对ios7.0以上的方法均无效。故采用另一种方式进行视图的切换。由原来的
presentViewController 改成使用NavigationController pushViewController的方式进行切换界面并且如果该界面涉及到多种方式的跳转,还要在返回的按钮出进行判断当前的ViewController是push还是present的方式显示的。因为要根据不同的进入方式,切换相应的退出模式。判断方法如下:
(1)通过判断self有没有present方式显示的父视图
-(void) backAction {

        if (self.presentingViewController) {
             [self dismissViewControllerAnimated:YES completion:nil];
       } else {
             [self.navigationController popViewControllerAnimated:YES];
    } 

}

(2)通过判断self.navigationController.viewControllers的最后一个是否是当前控制器,或者self.navigationController.topViewController == self

-(void) backAction {

         if (self.navigationController.topViewController == self) {
        [self.navigationController popViewControllerAnimated:YES];
    } else {
        [self dismissViewControllerAnimated:YES completion:nil];
    }


}

2、逻辑处理部分

   (1)当tableView的cell点击方法失效时,查看是否在tableView上添加了手势

   (2)添加友盟统计时:统计按钮的点击事件的时候,可以写一个button的分类,分类里利用关联的对象给button增加一个记录的方法,捕获sender发送的action并进行处理,在拦截的方法里做相关的统计操作即可,同理,设置页面统计的时候直接对相关的rootVC即在根视图页面进行统计,统计的标识是通过[self class]作为区分即可。

    (3)当获取的URL中包含相应的中文字符的时候,尤其是在SD_WebImage加载相应的图片的时候,此时如果路径被转义就会造成一个现象,图片的地址无法加载,解决的方式就是将网址进行UTF8的编码:案例如下:

        NSString * urlString = @"https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=%E9%92%A2%E7%90%B4";

       NSString *str = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

打印的结果如下:

技术分享

 

 

    

 

 

iOS 开发中的坑与相关技巧