IOS学习笔记

本文介绍了iOS开发中的几个关键技巧,包括使用IBAction和IBOutlet的方法、UI控件属性的设置建议、frame与bounds的区别及应用、修改frame属性的正确方式、添加动画效果的方法、transform属性的应用技巧、使用block传递信息的处理过程、恢复transform属性到初始状态的方法,以及如何禁用应用的屏幕方向切换。
1、IBAction和IBOutlet:
IBAction == void
IBAction只能用于方法,不能用于属性
IBOutlet由于声明属性中使用
2、控件属性
UI控件属性,苹果官方推荐weak
3、frame和bounds:

frame

@property(nonatomic)CGRect frame;
空间所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)

bounds

@property(nonatomic) CGRect bounds;
控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x和y一般为0)
4、修改frame中的属性:
下面一句为错:
_btn.frame.origin.y -= 10;
OC语法规定:不允许直接修改某个对象结构体属性的成员
想修改的话要对整体进行修改
CGRect newFrame = _btn.frame;
newFrame.origin.y -= 10;
_btn.frame = newFrame;
5、添加动画:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];

中间写自己的代码

[UIView commitAnimations];
6、transform属性
_btn.transform = CGAffineTransformMakeRotation(- M_PI_4);
这里的意思是,btn按钮逆时针旋转45度,但是执行是没有效果的,因为它每次都赋值45度,
这个形变属性不会在你上次的基础上赋值,而是赋值你现在是多少度,每次点击都赋值45度,
所以不会出现旋转的特效,再点击第一次旋转后就不会再动了。

_btn.transform = CGAffineTransformRotate(_btn.transform, -M_PI_4);
这个方法是,在_btn.transform的形变基础上累加一个角度-M_PI_4。
相应的缩放的方法:CGAffineTransformMakeScale();
和CGAffineTransformScale();也类似于旋转。
7、使用block传递信息处理过程(相当于传递方法)
-(void)btnClickWithBlock:(void (^)())block {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];

    block();

    [UIView commitAnimations];
}

-(IBAction)rotate:(id)sender {
    [self btnClickWithBlock:^{
        CGFloat scale = [sender tag] == 20 ? 1.2 : 0.8;
        _ btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);
    }];
}
当遇到头尾都一样只有中间数据处理不一样的情况就可以用这种代码重构的方法。
8、使对象的transform恢复原状
transform有一个常量CGAffineTransformIdentity,这个常量代表的结构体直接赋值给transform,
这样一赋值就会变成单位矩阵,即清空之前的所有transform
9、禁止app进行横屏竖屏的切换
在项目的plist文件中,有一个Supported interface orientations的key只保留Portrait (bottom home button)即可

转载于:https://my.oschina.net/are1OfBlog/blog/401469

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值