11.3适配 ios

2013-09-20 11:42:19 toss156 阅读数 37575

   昨天下了把手机升级成了IOS7 正式版,然后下了最新的xocde5.  试着编译了一下刚刚完成的几个应用,还好问题不大,半个小时的时间都适配好了,然后改了下几个新出现的warning。过几天等空了,要把IOS7的更新的特性好好看一下 http://www.cocoachina.com/newbie/basic/,记录一下。

Xcode5 正式版的下载地址:http://adcdownload.apple.com/Developer_Tools/xcode_5/xcode_5.dmg    建议用迅雷下,速度还是挺快的。

总结一下不一定是最好的方法,纯粹是省时间的方法,不至于在ios7的设备上看上去错位,想要充分符合ios7的风格,还是要在设计上做出一定的改变的):

(1)如果应用程序始终隐藏 status bar 那么恭喜呢,你在UI上需要的改动很少很少。

(2)如果应用程序显示status bar,可以讲status bar设置成黑色不透明 ,然后在UIViewController 中加入下面的判断,

#define IOS7_OR_LATER	( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
        if ( IOS7_OR_LATER )
        {
            self.edgesForExtendedLayout = UIRectEdgeNone;
            self.extendedLayoutIncludesOpaqueBars = NO;
            self.modalPresentationCapturesStatusBarAppearance = NO;
        }
#endif	// #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000

(3)如果勾选了Hide during application lauch 的话,在IOS7 的设备上,是没有问题的,

   启动完以后status bar 会重新出现的,但是在IOS7 一下的设备,需要在launch didfinish 里面把status bar 显示出来。


(4)可以通过设置view的背景颜色来改变 status bar 的颜色来搭配你的nav 条。

   (5)  有些地方肯能要对版本进行判断,分别做不同的处理。

   (6)  可以用旧版的sdk来编译,这样在真机上还是和原来一样的效果。具体的方法可以参考:http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/


2018-02-24 10:40:46 liudan302698481 阅读数 305

资料地址:

很详细的资料:https://www.jianshu.com/p/3a9ad4f0fa32?appinstall=0

适配遇到的一些坑:http://blog.csdn.net/st646889325/article/details/79066361

2017-11-29 10:19:45 u013127850 阅读数 244

1.iOS11下必须加那两个方法,否则不走表头表尾高度设置方法的

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    UIView *footView = [[UIView alloc]init];
    return footView;
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc]init];
    return headerView;
}


2.ios11不走self.automaticallyAdjustsScrollViewInsets = NO;


需要设置:

if (@available(iOS 11.0, *)) {
        tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    } else {
        // Fallback on earlier versions
    } 

2020-04-22 11:34:31 LiqunZhang 阅读数 204

使用Xcode 11.3创建项目时会发现多了两个文件,SceneDelegate.h和SceneDelegate.m,这是做什么用的呢,原来在iOS 13之后,iPad的应用可以支持在Mac上进行安装,从而引申出“场景”这个框架,即应用可以切换多个页面(场景)同时显示,而不仅限于之前的一个(UIWindow)

未完待续。。。

 

2019-11-28 14:51:09 ada_dengpan 阅读数 353

Xcode 11创建的工程,一开始运行时会出现黑屏现象。里面也多出SceneDelagate的文件。
原因:

  1. Xcode 11 默认是会创建通过UIScene管理多个UIWindow的应用,工程中除了 AppDelegate外会多一个SceneDelegate
  2. AppDelegateSceneDelegate是iPadOS带来的新多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。
    在多窗口开发iPadOS中,从iOS 13开始,AppDelegate应该:
  • 设置应用程序期间所需的任何数据。
  • 响应任何专注于应用的事件,例如与您共享的文件。
  • 注册外部服务,例如推送通知。
  • 配置您的初始场景。

IOS13之后,生命周期时间就开始由UISceneDelegate接管。
解决适配方案:

  1. 删除掉info.plistApplication Scene Manifest选项,同时可以删除Scenedelegate.hScenedelegate.m
  2. 删掉AppDelegate.m中的#pragma mark - UISceneSession lifecycle的代码
  3. AppDelegate.h中添加@property (strong, nonatomic) UIWindow * window;

重新编译运行,黑屏终于变白!

iOS11 适配

阅读数 1425