博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS工作笔记(十一)
阅读量:5045 次
发布时间:2019-06-12

本文共 3762 字,大约阅读时间需要 12 分钟。

1.关于代码规范

若想使用懒加载,

//懒加载-(CADisplayLink *)displayLink{    if (!_displayLink) {        _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(toDoDrawLine)];        _displayLink.frameInterval = 3;    }    return _displayLink;}

在声明属性时,就需要使用类似下列形式

@property(nonatomic,strong) CADisplayLink *displayLink;

而不能写成

@interface BarView(){    CADisplayLink *_displayLink;}

若写成带下划线形式的,那么懒加载方法是不会执行的。必须写成self形式

只有在不需要懒加载时,才可以定义为下划线形式。

 

2.float或double类型的四舍五入,无需其它方法,用字符串的stringWithFormat即可处理。如:

NSLog(@"%@", [NSString stringWithFormat:@"%.0f", 1.0003]);NSLog(@"%@", [NSString stringWithFormat:@"%.0f", 1.9003]);NSLog(@"%@", [NSString stringWithFormat:@"%.0f", 1.5003]);NSLog(@"%@", [NSString stringWithFormat:@"%.0f", 1.4003]);

打印结果:

 

3.为了防止按钮重复点击,可以把它设置为几秒内不能点击即可。用

performSelector:@selector() withObject: afterDelay:

就行。

 

4.关于IOS的像素和点得概念

IOS中尺寸的单位是点而不是像素,在Retina屏中一个点等于两个像素,普通屏下一个点等于1个像素。

在Retina屏中图片一般采用“xxx@2x.png”命名,在代码中只需写成“xxx.png”,程序会自动根据屏幕类型在Retina屏下使用“xxx@2x.png”,在非Retina屏下使用“xxx.png”。
iPhone4之后(x,y,width,height)=(20,30,40,50),表示宽度为40个点,高度为50个点,放在(20,20)个点的位置上。这样就屏蔽了屏幕的差别,专注搞开发。
对于图片,单位一般是像素,如a.png,大小为30x40像素,在iPhone3GS和iPhone4中使用的时候,都是占据30X40个点,而在iPhone4上,因为一个点是2个像素,所以是30X40像素的图片,显示在60X80像素的屏幕上,所以有些模糊。
这时就需要有a@2x.png的图片。在iPhone6 plus上,还需要a@3x.png图片,道理一样。

 

5.关于手势的操作

比如一个文本框textField,点击时键盘弹起,点其它地方时键盘消失。那么可以用

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissTheKeyboard)];[self.view addGestureRecognizer:tap];-(void)dismissTheKeyboard{    [self.textField resignFirstResponder];}

 

6.获取控件的各种位置,可以用CGRect。

其中,CGRect定义的是矩形。在计算多组件的位置时,就可以使用这种方法。

CGRectGetMaxY 获取下边界位置

CGRectGetMinY 获取上边界位置
CGRectGetMaxX 获取右边界位置
CGRectGetMinX 获取左边界位置
如:

- (void)viewDidLoad {    [super viewDidLoad];           UIView *view = [[UIView alloc]init];    view.frame = CGRectMake(80, 150, 100, 100);    view.backgroundColor = [UIColor blueColor];    [self.view addSubview:view];        CGRect labelRect = view.frame;    NSLog(@"----%@",NSStringFromCGRect(labelRect));    CGFloat maxY = CGRectGetMaxY(labelRect);    CGFloat minY = CGRectGetMinY(labelRect);    CGFloat maxX = CGRectGetMaxX(labelRect);    CGFloat minX = CGRectGetMinX(labelRect);    NSLog(@"maxY=%f,minY=%f,maxX=%f,minX=%f",maxY,minY,maxX,minX);}

打印结果为:

分析为:

 

7.IOS获取键盘高度,处理view的位置,需要用到通知

- (void)viewWillAppear:(BOOL)animated {    [super viewWillAppear:animated];    [self registerForKeyboardNotifications];}- (void)registerForKeyboardNotifications{    //键盘弹出    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];        //键盘隐藏    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];}
-(void)keyboardWillShow:(NSNotification*)notification{    //获取键盘高度    NSDictionary* info = [notification userInfo];    NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];    CGRect keyboardRect = [aValue CGRectValue];    CGFloat kHeight = keyboardRect.size.height;    [UIView animateWithDuration:duration animations:^{        self.bottomView.top = self.view.frame.size.height-49-kHeight;    }];}
- (void)keyboardWillBeHidden:(NSNotification*)notification{       //获取键盘高度    NSDictionary* info = [notification userInfo];    NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];    CGRect keyboardRect = [aValue CGRectValue];    CGFloat height = keyboardRect.size.height;    CGFloat duration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];        [UIView animateWithDuration:duration animations:^{        self.bottomView.top = self.view.frame.size.height-49;    }];}

 

转载于:https://www.cnblogs.com/Apologize/p/4812755.html

你可能感兴趣的文章
位图排序算法的一个实践
查看>>
HTML5--JS API-新的选择器
查看>>
handlebars添加条件判断
查看>>
Service 与 Thread 的区别
查看>>
Android 中Service生命周期
查看>>
(转载)Ubuntu 下常用的软件工具
查看>>
c++学习8 -- 引用变量
查看>>
Deap: python中的遗传算法工具箱
查看>>
javaweb笔记分享
查看>>
网页基础操作
查看>>
CodeForces869E The Untended Antiquity
查看>>
Django Restframework.3
查看>>
463. Island Perimeter
查看>>
windows使用命令行,提高效率
查看>>
UITbleView操作总结
查看>>
在vc下打印参数串
查看>>
LeetCode 3Sum Closest
查看>>
HTTP协议(转)
查看>>
codevs1145
查看>>
图---DFS
查看>>