iOS开发过程中遇到的问题和解决方法

  • 1、在运行程序时候出现iPhone xx doesn’t match any of XXX.app’s targeted device families. You can expand XXX.app’s targeted device families to support iPhone xx.
    意思是说你运行的项目所需要的设备和当前选中的设备不匹配。解决方法



    targets
    1)、项目的targets---》General-----》Deployment Info -----》device 选中和你手机匹配的选项。上面有3个选项iPhone (手机运行项目)iPad (iPad运行项目) Universal(手机和iPad都可以运行项目) 根据自己的情况选择。
    2)、在路径(targets---》General-----》Deployment Info -----》device)中查看项目默认选择的设备类型。用与之匹配的设备运行项目。

  • 2、UIButton 添加倒计时功能后会一闪一闪的 原因
    把button的type改成custom就可以了
  • 3、在项目中遇到一个需求: 一个页面上半部分用原生控件(图1绿色部分)下半部分由于是大段的文字又带有html标签和图片所以用webview展示(图1红色部分)。如下图


    图一

按理说这种页面应该直接写成h5页面的,但是我们前端紧张所以用这种布局方式展示。这里就会遇到一个问题,怎么设置webview的高度正好和内容的高度一样。这里用到一个UIWebView的代理 - (void)webViewDidFinishLoad:(UIWebView*)webView
在这个方法中获取 webview的contentSize (webView中其实包含一个scrollView)
[self.webView.scrollView contentSize].height,就可以获取高度。

  • 4、向上取整用函数ceil()返回不小于x的最小整数值
    ceil()括号里的内容必须是浮点数。
    NSInteger rows =ceil(10/3);
    这个时候返回的rows是3。因为10 和3 都是整数,相除之后还是整数。
    NSInteger rows =ceil(10/3.0);
    这个时候返回的是4 。因为3.0是个浮点型的。所以相除之后也是浮点。向上取整就是4。
  • 5、打印导航栏子视图
// 获取子视图
- (void)getSub:(UIView *)view andLevel:(int)level {
    NSArray *subviews = [view subviews];
    if ([subviews count] == 0) return;
    for (UIView *subview in subviews) {
        
        NSString *blank = @"";
        for (int i = 1; i < level; i++) {
            blank = [NSString stringWithFormat:@"  %@", blank];
        }
        NSLog(@"%@%d: %@", blank, level, subview.class);
        [self getSub:subview andLevel:(level+1)];
        
    }
}

例如打印导航栏的子视图

[self getSub:self.navigationController.navigationBar andLevel:1];
  • 6、错误提示“control reaches end of non-void block”
    意思是这个block不是void类型的需要有个返回值。
  • 7、在appdelegate中获取当前的nav方法有两种
    1、如果是用UINavigationController来组织页面结构的话可以使用
UINavigationController *nav =  (UINavigationController*)self.window.rootViewController;
UIViewController *currentVC = nav.visibleViewController;

2、如果是用UITabBarController来组织页面结构的话

UINavigationController *nav = ((UITabBarController*)appDelegate.window.rootViewController);
UIViewController *currentVC = nav.selectedViewController;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容