50.禁止横屏方法
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
49.一行代码解决改变展位图文本颜色代码
[_userName setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
48.修改状态栏颜色
iOS7默认状态栏文字颜色为黑色,项目需要修改为白色。
1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO
2 在需要改变状态栏颜色的 AppDelegate中在 didFinishLaunchingWithOptions 方法中增加:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
如果需要在单个ViewController中添加,在ViewDidLoad方法中增加:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
47.判断程序是否第一次启动
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]){
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
NSLog(@"第一次启动");
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"isLogin"];
}else{
NSLog(@"已经不是第一次启动了");
}
46.iPhone尺寸规格
45.模糊效果
// 模糊效果
// UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
// UIVisualEffectView *test = [[UIVisualEffectView alloc] initWithEffect:effect];
// test.frame = self.view.bounds;
// test.alpha = 0.5;
// [self.view addSubview:test];
44.block传值
block回调进行传值操作
首先思考你的值在什么地方(哪个控制器)A
谁需要这个值 B
一般block都是从后往前传值即(A对象先初始化 在A对象的生命周期中因为某些情况 需要B对象提供一个参数,那我们是在A的实现中初始化了B对象 A对象就可以获取到B对象 那就意味着可以将B对象的block.实现在A的肚子里 B对象可以获取到参数,获取到参数之后调用自己的block,就相当于方法调用,因为这个block实现在A中,所以系统会回到A的肚子里执行block的实现);
示例
A控制器中的一个按钮方法
-(void)buttonAction{
//初始化一个B控制器
B *bVC = [B new];
//实现B控制器的block
bVC.block = ^(参数类型 *参数名称){
nslog:(@“这是block的实现 获取到参数%@”,参数名称);
};
}
B控制器中请求数据的方法
-(void)requestData{
//获取到数据后调用自己的block并传入参数
self.block(参数) ; 调用block的时候系统回去寻找这个block的实现 无论它在哪里实现都会执行 如果没有实现会导致奔溃 所以我们一般会加个if判断一下是否实现了block
}
43.添加每个cell出现时的3D动画
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
// 动画1
// CATransform3D rotation;//3D旋转
// rotation = CATransform3DMakeRotation( (90.0*M_PI)/180, 0.0, 0.7, 0.4);
// //逆时针旋转
// rotation.m34 = 1.0/ -600;
//
// cell.layer.shadowColor = [[UIColor blackColor]CGColor];
// cell.layer.shadowOffset = CGSizeMake(10, 10);
// cell.alpha = 0;
//
// cell.layer.transform = rotation;
//
// [UIView beginAnimations:@"rotation" context:NULL];
// //旋转时间
// [UIView setAnimationDuration:0.8];
// cell.layer.transform = CATransform3DIdentity;
// cell.alpha = 1;
// cell.layer.shadowOffset = CGSizeMake(0, 0);
// [UIView commitAnimations];
// 动画2
cell.alpha = 0.5;
CGAffineTransform transformScale = CGAffineTransformMakeScale(0.3,0.8);
CGAffineTransform transformTranslate = CGAffineTransformMakeTranslation(0.5, 0.6);
cell.transform = CGAffineTransformConcat(transformScale, transformTranslate);
[tableView bringSubviewToFront:cell];
[UIView animateWithDuration:.4f
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
cell.alpha = 1;
//清空 transform
cell.transform = CGAffineTransformIdentity;
} completion:nil];
// 动画3
/*
// 从锚点位置出发,逆时针绕 Y 和 Z 坐标轴旋转90度
CATransform3D transform3D = CATransform3DMakeRotation(M_PI_2, 0.0, 1.0, 1.0);
// 定义 cell 的初始状态
cell.alpha = 0.0;
cell.layer.transform = transform3D;
cell.layer.anchorPoint = CGPointMake(0.0, 0.5); // 设置