iOS开发总结(不断更新)

  • 但凡以view开头的方法,先调用super方法
  • 方法有File,必须用到路径[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"];
  • 除开图片之外的其他资源,都用mainBundle
  • 获取1到x之间的整数:int value = (arc4random() % x) + 1;
    arc4random_uniform(100) 生成0~100之间的随机整数。
  • 字符串创建控制器,不用import头文件
    [[NSClassFromString(@"homeVC") alloc] init];
  • 输出两位的数字 不够时用0补齐
    NSLog(@"%02d" ,1); → 01
  • 一个像素尺寸的图片
    1 / [UIScreen mainScreen].scale
  • 修改Tabbar Item的属性
// 修改标题位置
 self.tabBarItem.titlePositionAdjustment = UIOffsetMake(0, -10);
 // 修改图片位置
 self.tabBarItem.imageInsets = UIEdgeInsetsMake(-3, 0, 3, 0);

 // 批量修改属性
 for (UIBarItem *item in self.tabBarController.tabBar.items) {
     [item setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                   [UIFont fontWithName:@"Helvetica" size:19.0], NSFontAttributeName, nil]
                         forState:UIControlStateNormal];
 }

 // 设置选中和未选中字体颜色
 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

 //未选中字体颜色
 [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor greenColor]} forState:UIControlStateNormal];

 //选中字体颜色
 [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor cyanColor]} forState:UIControlStateSelected];
  • MJExtension字典转模型
// 模型属性名和字典中的key有冲突时时替换
 + (NSDictionary *)mj_replacedKeyFromPropertyName
{
    return @{
        @"Id" : @"id",
        @"desc" : @"desciption",
        @"oldName" : @"name.oldName",
        @"nowName" : @"name.newName",
        @"nameChangedTime" : @"name.info[1].nameChangedTime",
        @"bag" : @"other.bag"
    };
}
// 属性里的数组类型
@property(nonatomic, strong) NSArray * users;
 + (NSDictionary *)mj_objectClassInArray
{
    return @{
        @"users":@"User",// 或者
        // @"users":[User class],
    };
}
  • 打包发布
    1. Edit Scheme→run状态下设置Release模式
    2. 模拟器一定选真机
    3. comm+B编译,Products文件下的app红色变黑色,找到它
    4. 拷贝到Payload文件夹,压缩成zip
    5. 后缀名zip改为ipa

直接把app拖到在iTunes的应用程序界面,找到它就打包好了


  • 添加东西到项目,先comm+B一下看有没有错
    一个cell对应一个xib,不管有多么相同
    plist文件名不要包含Info

给控制器传递数据,不能在重写模型的方法里,他先执行,别的还没创建
——直接用模型

把照片存到相册中:

(1)UIImageWriteToSavedPhotosAlbum(image, nil , nil , nil );
不需要回调,上下文也不需要传
涉及到隐私,会提示
(2)没有名称,又不好去取出来?
使用图片选择器UIImagePickerController,实现代理方法
??写到沙盒

  • 把照片保存到模拟器相册
-(void)viewDidLoad {  
    [super viewDidLoad]; 
    for (int index=1; index<11; index++) {
        NSString *imgName=[NSString stringWithFormat:@"%d.jpg", index];  
        UIImage *img=[UIImage imageNamed:imgName];  
        UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
    }
}


开发常识

状态栏高度:20
导航栏高度:44
cell的默认高度:44
UITabBar默认高度:49

高度64这样写死了好不好?如果是横屏的话,有可能是44
navigationBar竖屏下默认高度44,横屏下默认高度32


屏幕尺寸

1.屏幕大小
iPhone4做原型时,320×480
iPhone5做原型时,320×568
iPhone6做原型时,375×667
iPhone6Plus原型,414×736

2.屏幕分辨率
iPhone4的显示分辨率,640×960
iPhone5的显示分辨率,640×1136
iPhone6的显示分辨率,1334×750
iPhone6 Plus显示为,1920×1080


页面不添加标记进行一次性判断

if (objc_getAssociatedObject(self, _cmd)) {
  NSLog(@"已经加载过啦");
} else {
  objc_setAssociatedObject(self, _cmd, @"Launch", OBJC_ASSOCIATION_RETAIN);
  NSLog(@"第一次加载");
}

你可能感兴趣的:(iOS开发总结(不断更新))