彩票

one day

通过stroybod加载.png
图片命名通过偏移量scrollview.png
加载到控制器.png
启动图片.png
EF3D7750B27A73D098F72E0D34169312.jpg

two day

  • 自定义Tabbar用UIview里面的数组 NSArray(UITabbarItem) 用一个数组 在外边传进来 里面是UITabbarItme元素
tabbar尺寸.jpg
把tabbar当一个对象添加到一个数组中.jpg
如上.jpg
UITabba属性.png
导航条属性必须用默认的 其他都是透明的.png
  • 统一设置导航条的方法(UINavigationBar appearance)以及当前类或子类第一次


    统一设置导航条的方法(UINavigationBar appearance)以及当前类或子类第一次.png
  • 另一种统一设置导航条的方法


    另一种统一设置导航条的方法.png

two day

nowlaydege.png
button自适应尺寸.png
pch路径.png
分类的里面声明方法注意事项.png
图片分类之原始图片.png

three day

蒙版

  • 如果一个控制器默认从xib加载,控件的尺寸默认跟xib一样大
  • 把结构体包装成对象【NSValue valueWithCGrect:CGZero】
  • 取消xib的自动布局
  • 修改父控件的frame,并不会影响里面的子控件- 如果需要修改子控件的frame,设置子控件的尺寸随着父控件的改变而改变。
  • 如果用translation 修改形变,值为0 时直接消失,可以减小到0.01;
  • 把一个控件从一个位置移动到另一个位置,有两种方法:
    • 1 可以修改frame ,center 中心点
    • 2可以用translation 去修改scale,translate(修改x,y值)
  • 少耦合
  • 可以用block 传值,像UIView animationDuration complete:
block深层理解.png
从xib加载一个空间尺寸默认和它一样大.png
方法传参block.png
主窗口.png
20171026224019.png
20171026213554.png

four day

  • 抛异常
  • 下拉动画
  • 计算行数 rows = (count -1)/cols + 1
bool属性取反.png
计算当前总行数.png
抛异常.png
translation动画.png

five day

  • 快捷键 commond + optiontal + enter == 跳转到相应的控制器
  • 快捷键 commond + optiontal + 等号 == 更新约束
  • 通过storyboard 加载控制器 storyboard 箭头
  • 在xib或者storyboard中只有uiimageview 可以用拉伸方法 strech。 按钮(button)不可以用没有效果 x= 0.5,y= 0.5,w= 0,h = 0; 0 0 表示一个像素。
改变button内部图片和label的位置 精髓.png
获取button当前图片.png
通过storyboard加载view controller.png
在xib或者storyboard中拉伸image view.png
重写,自定义控制器view.png

five day

  • 获取版本号:info.plist 右击sourcecode看源文件,取出对应的key.
  • 封装业务逻辑类。存储,rootVC选择跟控制器
  • [NavigationController alloc ]initWithRootViewController --》方法会调用
    push vc 方法--》 pushViewController:(UIViewController*)viewController animated:(Bool)animated
  • 导航控制器的自定义返回箭头。有两种方法。
  • 导航控制器自带的返回功能,靠近屏幕左侧滑动返回上级页面。如果自定义返回功能,这个功能就会消失。这时需要取消导航控制器触摸的一个代理。
自定义设置导航控制器返回箭头以及自带返回功能.png
跳转rootvc方法.png
还原导航控制器返回共能.png
导航栏返回箭头2.png
导航栏返回箭头1.png
collectionView属性.png
collectionView init初始化.png

six day

  • c语言字符串转换成oc字符串用@()包装
  • 系统滑动返回
    • 用一个delegate 记录住self.interactivePopGestureRecognizer.delegate;
    • 自己代理==自己 self.delegate == self;实现导航控制器的代理方法
    • 如果展示的控制器是根控制器,就还原pop手势代理
self.popDelegate = self.interactivePopGestureRecognizer.delegate;
    
    
    self.delegate = self;
}

#pragma mark - 导航控制器的代理方法
// 完全展示完调用
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // 如果展示的控制器是根控制器,就还原pop手势代理
    if (viewController == [self.viewControllers firstObject]) {
        self.interactivePopGestureRecognizer.delegate = self.popDelegate;
        
    }
}
// self -> 导航控制器
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{


    if (self.viewControllers.count != 0) { // 非跟控制器hi
        viewController.hidesBottomBarWhenPushed = YES;
        
        // 设置导航条左边按钮的内容,把系统的返回按钮给覆盖,导航控制器的滑动返回功能就木有啦
        viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"NavBack"] style:UIBarButtonItemStyleBordered target:self action:@selector(back)];
        
        // 就有滑动返回功能
        self.interactivePopGestureRecognizer.delegate = nil;
        
    }
    
    
    [super pushViewController:viewController animated:animated];
}
  • 自定义滑动返回
    • self.interactivePopGestureRecognizer.delegate ==( id target = [objc valueForKeyPath:@"_target"]);
 // 取出系统手势的target对象,
    
    //  取出某个对象里面属性 1.KVC 前提条件:必须知道属性名 2.运行时
    
    // 遍历某个类里面所有属性 Ivar:表示成员属性
    // copyIvarList只能获取哪个类下面的属性,并不会越界(不会把它的父类的属性给遍历出来)
    // Class 获取哪个类的成员属性
    // count:告诉你当前类里面成员属性的总数
    unsigned int count = 0;
    // 返回成员属性的数组
    Ivar *ivars = class_copyIvarList([UIGestureRecognizer class], &count);
    
    for (int i = 0; i < count; i++) {
        // 取出成员变量
        Ivar ivar = ivars[i];
        
        // 获取属性名
        NSString *ivarName = @(ivar_getName(ivar));
        
        NSLog(@"%@",ivarName);
        
        
    }
    
    // _targets:属性名 value
    NSArray *targets = [self.interactivePopGestureRecognizer valueForKeyPath:@"_targets"];
    
    id objc = [targets firstObject];
    id target = [objc valueForKeyPath:@"_target"];

// 其实  target == self.interactivePopGestureRecgnizer.delegate

 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
    
    pan.delegate = self;
    
    [self.view addGestureRecognizer:pan];

#pragma mark - 手势代理方法
// 是否开始触发手势
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    // 判断下当前控制器是否是跟控制器
    
    return (self.topViewController != [self.viewControllers firstObject]);
}
  • 模型的继承
  • block循环利用


    block循环利用问题.png
根据模型判断类别.png
模型block.png
模型控制器跳转类名.png

seven day

导图.png
modal一个导航控制器.png
QQ截图20171117212649.png
QQ截图20171117215527.png
webview加载javasprit.png
获取路径的另一种方法.png
路径.png
解析数据.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 微博动画的实现 通过代码加载storyboard的步骤注意:通过storyboard启动,根控制器的view并不会...
    木喳喳的夏天阅读 451评论 0 0
  • 知识点回顾 开发方式:使用代码搭建框架,因为彩票app的界面非常多,使用代码搭建方便后期维护 环境部署app支持的...
    木喳喳的夏天阅读 258评论 1 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,257评论 4 61
  • 2016年07月08日周五雨转晴 “起来,不愿做奴隶的人们,把我们的血肉……”只听国歌在我耳边响起,今天我就简略的...
    侦探迷阅读 204评论 0 0
  • 丫头,窗外的天在下雨,天空也不在那么蓝,满是乌云,不知怎的,心里也跟着下雨了。 有人说太想一个人你就会在梦里见到她...
    小小ep小印阅读 315评论 0 0