彩票
2017-10-24 本文已影响0人
小的小碰撞
one day





two day
- 自定义Tabbar用UIview里面的数组 NSArray(UITabbarItem) 用一个数组 在外边传进来 里面是UITabbarItme元素





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





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:






four day
- 抛异常
- 下拉动画
- 计算行数 rows = (count -1)/cols + 1




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 表示一个像素。





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







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



seven day







