• iOS 屏幕适配


    对于iOS开发,屏幕的适配真的很重要,在这里就不多说了,今天主要给大家介绍一下按比例适配;

    1.首先我们在 AppDelegate.h 里面定义两个宏定义,屏幕的宽和高

    #import <UIKit/UIKit.h>

    //宏定义

    #define ScreenHEIGHT [[UIScreen mainScreen] bounds].size.height

    #define ScreenWIDTH  [[UIScreen mainScreen] bounds].size.width

     @interface AppDelegate : UIResponder <UIApplicationDelegate>

    @property (strong, nonatomic) UIWindow *window;

    //设置自动缩放的比例

    @property (nonatomic ,assign) float autoSizeScaleX;

    @property (nonatomic ,assign) float autoSizeScaleY;

     @end

     2.在AppDelegate.m文件里面实现了计算缩放屏幕的的倍数:

    #import "AppDelegate.h"

     @interface AppDelegate ()

     @end

    @implementation AppDelegate

     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        // Override point for customization after application launch.

        //创建一个UIApplication的单例,并且指定代理,这样就可以传值了

        AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

        //判断屏幕的高度如果 大于480 ,注意这里是以5s为基准

        if (ScreenHEIGHT >480) {

            //计算出自动缩放的倍数

            myDelegate.autoSizeScaleX = ScreenWIDTH/320;

            myDelegate.autoSizeScaleY = ScreenHEIGHT/568;

        }

        else{

            //小于480 就是iPhoneon4,所以正常显示

            myDelegate.autoSizeScaleX = 1.0;

            myDelegate.autoSizeScaleY = 1.0;

        }

        return YES;

    }

     3.在要屏幕适配的页面加上一个 CG_INLINE CGRect(内联函数):

    #import "ViewController.h"

    #import "AppDelegate.h"

    @interface ViewController ()

     @end

     @implementation ViewController

     - (void)viewDidLoad {

        [super viewDidLoad];

        }

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    //内联函数

    CG_INLINE CGRect

    // 重新定义控件的尺寸

       CGRentMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height){

           CGRect rect;

           AppDelegate *myappdelegate = [[UIApplication sharedApplication] delegate];

           //按比例缩放 坐标,和尺寸

           rect.origin.x = x*myappdelegate.autoSizeScaleX;

           rect.origin.y = y*myappdelegate.autoSizeScaleY;

           rect.size.width = width*myappdelegate.autoSizeScaleX;

           rect.size.height = width*myappdelegate.autoSizeScaleY;

           return rect;

    }

    @end

     4.写完内联函数后,以后你定义的控件的frame 都不要用CGRectMake来设置尺寸了,用重新定义控件的CGRentMake1来设置,这样就实现了自动缩放了,可以任性在

    iphone任意尺寸上用了。赶快试试吧!

     注意:此方法只适用于精度不是要求高的应用;

  • 相关阅读:
    一文读懂高性能网络编程中的I/O模型
    QQ的成功,远没有你想象的那么顺利和轻松
    解密“达达-京东到家”的订单即时派发技术原理和实践
    以网游服务端的网络接入层设计为例,理解实时通信的技术挑战
    老罗最新发布了“子弹短信”这款IM,主打熟人社交能否对标微信?
    最火移动端跨平台方案盘点:React Native、weex、Flutter
    ogre3D学习基础11 -- 交换两个场景管理器
    STL学习笔记2--list
    STL学习笔记1--vector
    设计模式 --- 学习总结
  • 原文地址:https://www.cnblogs.com/liumu/p/5361486.html
Copyright © 2020-2023  润新知