IOS 屏幕适配方案实现缩放window的示例代码

 更新时间:2020年04月13日 09:23:52   作者:xiari  
这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景:

公司有个iPad项目(只支持横屏),是11年开发的,那时的iPad只有1024x768的分辨率,所以没有屏幕适配的问题,frame都是写死的。后来不同尺寸的iPad相继出现,本来应该会出现屏幕不能适配的问题,但是由于该项目没有设置启动图,页面会自动等比例缩放撑满整个屏幕,各分辨率的宽高比相差不多,所以并没有出现太大问题。但是2020年3月4日,苹果要求所有提交至 App Store 的 app 都须使用 Xcode storyboard(故事板) 来提供 app 的启动屏幕,之前的不设置启动图取巧的方式就不能用了。

最理想的适配方案当然是AutoLayout,但改为AutoLayout改动太大,目前适配周期短,所以这种方案就淘汰了。然后考虑使用AutoResizing,改动小了很多,但是由于项目很大,页面很多,改动时间还是有些长。

最后考虑了不设置启动图能正常适配的原理。考虑使用缩放Window的方案

缩放方案

1、window缩放

  self.window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
  CGFloat scaleX = [UIScreen mainScreen].bounds.size.width / 1024;
  CGFloat scaleY = [UIScreen mainScreen].bounds.size.height / 768;
  self.window.transform = CGAffineTransformMakeScale(scaleX, scaleY);
  CGRect rect = self.window.frame;
  self.window.frame = CGRectMake(0, 0, rect.size.width, rect.size.height);

2、屏幕尺寸的分辨率需要自己写死,不能使用screen的bounds

#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width 
改为 #define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height 
改为 #define SCREEN_HEIGHT 768

3、在window上添加视图,不要使用window.center来让视图居中。因为window.frame.origin 已经不是(0,0)了。

alertView.center = CGRectMake(1024 * 0.5, 768 * 0.5)

此方案的缺点

1、如果使window等比例缩放,iPad Pro 11英寸上下会有一点黑边。
2、如果使window宽高缩放撑满整个屏幕,iPad Pro 11英寸会略微有些变形,不明显
3、会有点模糊,不明显
4、如果哪天新出一款iPad宽高比和以前的iPad差别比较大,缩放方案就不适用了。

到此这篇关于IOS 屏幕适配方案实现缩放window的示例代码的文章就介绍到这了,更多相关IOS 缩放window内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于iOS 11的一些新特性适配实践总结

    关于iOS 11的一些新特性适配实践总结

    iOS 11 为整个生态系统的 UI 元素带来了一种更加大胆、动态的新风格。下面这篇文章主要给大家总结介绍了关于iOS 11的一些新特性适配实践,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-11-11
  • IOS开发之路--C语言数组和字符串

    IOS开发之路--C语言数组和字符串

    数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等。而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符串数组
    2014-08-08
  • iOS利用UIBezierPath + CAAnimation实现路径动画效果

    iOS利用UIBezierPath + CAAnimation实现路径动画效果

    在iOS开发中,制作动画效果是最让开发者享受的环节之一,这篇文章主要给大家介绍了关于iOS利用UIBezierPath + CAAnimation实现路径动画效果的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10
  • IOS使用UICollectionView实现无限轮播效果

    IOS使用UICollectionView实现无限轮播效果

    这篇文章主要为大家详细介绍了IOS使用UICollectionView实现无限轮播效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 详解IOS四种保存数据的方式

    详解IOS四种保存数据的方式

    本篇文章主要介绍了OS四种保存数据的方式,现在分享给大家,也给大家做个参考。感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • 详解iOS应用UI开发中的九宫格坐标计算与字典转换模型

    详解iOS应用UI开发中的九宫格坐标计算与字典转换模型

    这篇文章主要介绍了iOS应用UI开发中的九宫格坐标计算与字典转换模型,代码基于传统的Objective-C,需要的朋友可以参考下
    2016-01-01
  • iOS开发之清除缓存功能的实现

    iOS开发之清除缓存功能的实现

    现在的绝大多数应用中都存在着清楚缓存的功能,形形色色,各有千秋,所以小编现为大家介绍一种最基础的清除缓存的方法,有需要的可以参考借鉴。下面来一起看看吧。
    2016-09-09
  • 仿IOS效果 带弹簧动画的ListView

    仿IOS效果 带弹簧动画的ListView

    这篇文章主要介绍了仿IOS效果,带弹簧动画的ListView,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • iOS实现应用内切换语言及字体大小(模仿微信)

    iOS实现应用内切换语言及字体大小(模仿微信)

    这篇文章主要给大家介绍了关于利用iOS如何实现应用内切换语言及字体大小的相关资料,实现的效果类似我们经常在微信中见到的,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-01-01
  • IOS实现验证码倒计时功能(二)

    IOS实现验证码倒计时功能(二)

    这篇文章主要介绍了IOS实现验证码倒计时功能,点击获取验证码,进入时间倒计时,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论