AppDelegate.h
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property float autoSizeScaleX;
@property float autoSizeScaleY;
@end
AppDelegate.m
#import "AppDelegate.h"
#define ScreenHeight [[UIScreen mainScreen] bounds].size.height
#define ScreenWidth [[UIScreen mainScreen] bounds].size.width
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
if (ScreenHeight > 568 || ScreenHeight < 568) {
myDelegate.autoSizeScaleX = ScreenWidth / 320;
myDelegate.autoSizeScaleY = ScreenWidth / 568;
} else {
myDelegate.autoSizeScaleX = 1.0;
myDelegate.autoSizeScaleY = 1.0;
}
return YES;
}
ViewController.m
#import "ViewController.h"
#import "AppDelegate.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake1(100, 100, 50, 50)];
imageview.backgroundColor = [UIColor redColor];
[self.view addSubview:imageview];
}
CG_INLINE CGRect CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height) {
AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
CGRect rect;
rect.origin.x = x * myDelegate.autoSizeScaleX;
rect.origin.y = y * myDelegate.autoSizeScaleY;
rect.size.width = width * myDelegate.autoSizeScaleX;
rect.size.height = height * myDelegate.autoSizeScaleY;
if (ScreenHeight == 480) {
rect.origin.x = x * myDelegate.autoSizeScaleY;
rect.origin.y = y * myDelegate.autoSizeScaleY;
rect.size.width = width * myDelegate.autoSizeScaleY;
rect.size.height = height * myDelegate.autoSizeScaleY;
}
return rect;
}
本文介绍了一种在iOS应用中实现界面元素自适应不同屏幕尺寸的方法。通过在AppDelegate中设置autoSizeScaleX和autoSizeScaleY属性,可以计算出相对于标准尺寸的缩放比例,并在ViewController中使用自定义的CGRectMake1函数来创建适配当前设备屏幕尺寸的frame。
1822

被折叠的 条评论
为什么被折叠?



