ios中object c纯代码开发屏幕适配处理方法

纯代码开发屏幕适配处理方法:

为适配iphone各个版本的机型,对ui布局中的坐标采用比例的方式进行初始化,在这里选定iphone6作为ui布局

1.首先在AppDelegate.h中定义两个属性:

 1 #import <UIKit/UIKit.h>
 2
 3 @interface AppDelegate : UIResponder <UIApplicationDelegate>
 4
 5 @property (strong, nonatomic) UIWindow *window;
 6
 7
 8 @property(nonatomic,assign)CGFloat autoSizeScaleX;
 9 @property(nonatomic,assign)CGFloat autoSizeScaleY;
10
11 @end

2.在AppDelegate.m中对属性进行初始化(计算出当前运行的iphone版本的屏幕尺寸跟设计ui时选定的iphone6的比例):

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    self.autoSizeScaleX = [UIScreen mainScreen].bounds.size.width/375;
    self.autoSizeScaleY = [UIScreen mainScreen].bounds.size.height/667;

    return YES;
}@end

3.在需要使用ui布局的地方,用内联函数进行数据初始化(内联函数会在程序编译的时候执行,这样做的好处是加快程序在运行时候的速度,在运行的时候就不需要再对坐标进  行计算):

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setTitle:@"登陆" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    btn.frame = CGRectMake1(20, 20, 335, 300);
    btn.backgroundColor = [UIColor greenColor];
    [self.view addSubview:btn];
}

//创建内联函数 (在程序编译的时候执行,在函数前声明后编译器执行起来更具效率,使宏的定义更节省,不涉及栈的操作)
CG_INLINE CGRect
CGRectMake1(CGFloat x,CGFloat y,CGFloat width,CGFloat height)
{
    //创建appDelegate 在这不会产生类的对象,(不存在引起循环引用的问题)
    AppDelegate *app = [UIApplication sharedApplication].delegate;

    //计算返回
    return CGRectMake(x * app.autoSizeScaleX, y * app.autoSizeScaleY, width * app.autoSizeScaleX, height * app.autoSizeScaleY);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

4.进阶:把内联函数些到一个viewController中,然后把这个viewController作为其他viewController的父类,这样做的话可以只写一个内联函数,然后在别的viewController中多次调用和使用,节省代码量。

时间: 2024-10-11 01:31:56

ios中object c纯代码开发屏幕适配处理方法的相关文章

纯代码 自动屏幕适配iPhone

代码判断,你也可以用xib自带的自动布局选项 我是用的纯代码写的 纯代码 自动屏幕适配iPhone,布布扣,bubuko.com

iOS UITableViewCell UITableVIewController 纯代码开发

iOS UITableViewCell UITableVIewController 纯代码开发 <原创> 1.纯代码 自定义UITableViewCell 直接上代码 ////// #import <UIKit/UIKit.h> @interface CodeTableViewCell : UITableViewCell @property (nonatomic, weak) UIImageView *iconView; @property (nonatomic, weak) UI

iOS界面布局之三——纯代码的autoLayout及布局动画

iOS界面布局之三--纯代码的autoLayout及布局动画 一.引言 关于界面布局,apple的策略已经趋于成熟,autolayout的优势在开发中也已经展现的淋漓尽致.除了使用storyBoard进行布局约束的拖拽,有时我们也需要在代码中进行autolayout的布局设置,Masonry库可以方便的创建约束属性,实际上,我们也没有必要再使用系统原生的代码来创建和设置约束,这篇博客只作为使用的方法备忘.前几篇布局介绍的链接如下: 使用autoresizing进行界面布局:http://my.o

iOS设计中不同屏幕适配的方法-登陆界面

在iOS的手机界面设计中,由于不同手机类型的手机的尺寸不同,那么在设计手机界面时就得对屏幕进行适配,这里就以登陆界面的设计为例简单说明下 实现屏幕适配的方法:(屏幕自动适配缩放) 效果: 下面就看下代码实现的过程: 1.在代理中实现的代码: AppDelegate.h // 登陆界面设计 #import <UIKit/UIKit.h> #define ScreenHeight [[UIScreen mainScreen]bounds].size.height//屏幕高度 #define Scr

iOS中UIWebView执行JS代码(UIWebView)

iOS中UIWebView执行JS代码(UIWebView) 有时候iOS开发过程中使用 UIWebView 经常需要加载网页,但是网页中有很多明显的标记让人一眼就能看出来是加载的网页,而我们又不想被人卡出来. 如网页中的这个导航 通常我们不需要WebView中的 导航栏,也不需要里面的返回上一级的交互.. 对WebView常用的另外一种功能就是对某个点击添加对用function实现JS调用OC的交互功能. 下面一一介绍: 1. UIWebView 调用JS代码 OC调用JS通常是,在webVi

iOS开发——屏幕适配篇&amp;Masonry详解

Masonry详解 前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代 window的size固定为(320,480) 我们只需要简单计算一下相对位置就好了 在iphone4-iphone4s时代 苹果推出了retina屏 但是给了码农们非常大的福利:window的size不变 在iphone5-iphone5s时代 window的size变了(320,5

iOS开发屏幕适配问题解决方案

屏幕适配问题共有四种解决方案:(1)根据屏幕宽高写控件frame(下策):(2)Autoresizing的使用(中策):(3)AutoLayout的使用(上策):(4)sizeClasses+AutoLayout的使用(上上策).下面将会分别来进行叙述. (1)根据当前屏幕的宽高写frame 在新特性界面中,根据:[UIScreen mainScreen].bounds.size.height.来判断用户的屏幕长度,来判断时3.5寸,4寸,4.7寸,5.5寸,以此来设置新特性中图片选用哪套. 常

iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相

iOS:删除storyBoard,纯代码实现UITabBarController的视图切换功能

storyboard是一个很强大的编写代码的辅助工具,可以帮助布局多个视图之间的联系,既直观又能减少代码量:但是,作为一个程序员,在不使用storyboard的情况下,纯代码编写是必须的技能. 下面就用纯代码实现纯代码实现UITabBarController的视图切换功能,咱就实现三个视图之间的转换吧,代码不多,容易看的明白. 步骤: 1.删除storyboard故事板和UIViewController 2.创建三个控制器类,均继承自UIViewController,分别为FirstViewCo