1. 取消collectionView头视图重叠情况:以下两种情况效果一样 但是有一点点bug 每次remove之后 需要把视图刷到上面才会显示(后续会改进方法)

for (UIView *view in headerView.subviews) {
[view removeFromSuperview];
}
[view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

2. 获取视图的viewController 和 UINavigationController

- (UINavigationController*)viewController {

    for (UIView* next = [self superview]; next; next = next.superview) {

        UIResponder* nextResponder = [next nextResponder];

        if ([nextResponder isKindOfClass:[UINavigationController class]]) {

            return (UINavigationController*)nextResponder;

        }

    }

    return nil;

}

- (UIViewController*)viewControllerSelf{

    for (UIView* next = [self superview]; next; next = next.superview) {

        UIResponder* nextResponder = [next nextResponder];

        if ([nextResponder isKindOfClass:[UINavigationController class]]) {

            return (UIViewController*)nextResponder;

        }

    }

    return nil;
}

3. 手动在控制器上添加NavigationBar:

代码如下:

- (void)setNavigationBar {
// 创建NavigationBar
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(, , ScreeFrame.size.width, )];
navigationBar.backgroundColor = [UIColor whiteColor]; // 添加按钮 (左右均可 例子为左侧返回按钮)
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(, , ScreeFrame.size.width / , );
backButton.titleLabel.font = [UIFont systemFontOfSize:];
[backButton setTitle:@"戻る" forState:UIControlStateNormal];
[backButton setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
// 添加点击事件
[backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; // 创建 NavigationItem
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"分类"];
UIBarButtonItem *leftButtton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
// 将自定义的按钮赋给Item的左侧按钮
item.leftBarButtonItem = leftButtton; // 显示NavigationBar
[navigationBar pushNavigationItem:item animated:YES];
[self addSubview:navigationBar];
}

4. NavigationBar设置Title颜色:

iOS7以前:

navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor orangeColor] forKey:UITextAttributeTextColor];

iOS7以后:

navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor orangeColor] forKey:NSForegroundColorAttributeName];

iOS7之后:设置Title颜色及字体大小,都需要用到:NSForegroundColorAttributeName

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName, [UIFont systemFontOfSize:], NSForegroundColorAttributeName, nil]];

5. CollectionView 头尾视图:

注:

多次打印检测出如下方法返回的数组元素个数为3(是因为这个方法是 Visible  显示在屏幕上可见的视图 )

// 返回值是NSIndexPath的数组
[self.collectionView_Subject indexPathsForVisibleSupplementaryElementsOfKind:UICollectionElementKindSectionHeader]

6.UTC秒数和日期相互转换

本部分内容原博:http://blog.it985.com/8776.html

时间转换为时间戳:

NSDate *date = [NSDate date];
NSLog(@"当前日期为:%@",date);
NSTimeInterval timeStamp= [date timeIntervalSince1970];
NSLog(@"日期转换为时间戳 %@ = %f", date, timeStamp);

时间戳转换为时间:

NSString *timeStamp2 = @"";
long long int date1 = (long long int)[timeStamp2 intValue];
NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:date1];
NSLog(@"时间戳转日期 %@ = %@", timeStamp2, date2);

获取当前时间:

NSDate *currentDate = [NSDate date];//获取当前时间,日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss SS"];
NSString *dateString = [dateFormatter stringFromDate:currentDate];
NSLog(@"dateString:%@",dateString);

7. 获取倒叙数组:

NSEnumerator *enumerator=[self.segment.subviews reverseObjectEnumerator];//得到集合的倒序迭代器
id obj = nil;
NSInteger i = ;
while(obj = [enumerator nextObject]){
if (i < count - ) {
[self.segment.subviews[i] removeFromSuperview];
// NSLog(@"BBB %ld", self.segment.subviews.count);
}
i++;
}

8. button选中状态:

button.selected 默认为NO

button或者imageView设置图片圆角:在Xcode7以上:(强调clipsToBounds这个属性)

// 这个属性只是习惯加上去了   不知道去了可不可以设置圆角(不加也可以的 ~ )
[detailButton layoutIfNeeded];
// 这个属性很重要 设置之后才能变成圆角
detailButton.clipsToBounds = YES;
detailButton.layer.cornerRadius = detailButton.frame.size.width / 8;

9. NSObject 中常用方法:

原博:http://blog.csdn.net/leikezhu1981/article/details/7446001

http://blog.csdn.net/chengyingzhilian/article/details/7930398

/*
 用于判断对象是不是参数提供的类型(参数可以是父类的class) 
 参数示例: [NSObject class];
 */
- (BOOL)isKindOfClass:(Class)aClass;

/* 
 用于判断对象是不是参数提供的类型(参数不可以是父类的class) 
 参数示例: [NSObject class];
 */
- (BOOL)isMemberOfClass:(Class)aClass;

/*
 判断对象是否为指定类的子类
 */
+ (BOOL)isSubclassOfClass:(Class)aClass;

/*
 用于判断对象是否遵守了参数提供的协议 
 参数示例: @protocol(UIApplicationDelegate)
 */
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;

/*
用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)
 参数示例: @selector(test) or @selector(testById:)
 */
- (BOOL)respondsToSelector:(SEL)aSelector;

/*
 用于判断调用者的实例对象是否拥有提供的方法
 */
+ (BOOL)instancesRespondToSelector:(SEL)aSelector;

/*
 延迟调用参数提供的方法,参数所需参数用withObject传入(类似于ActionScript3.0中的setTimeout函数)
 delay单位:秒
 */
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;

 

10.Xcode7之后的一个属性:automaticallyAdjustsScrollViewInsets

默认值为YES。

automaticallyAdjustsScrollViewInsets根据按所在界面的status bar,navigationbar,与tabbar的高度,自动调整scrollview的 inset,一般情况下需要程序员手动设置为NO,不让viewController调整。

11. 给button添加图片(显示蓝色):

给button添加图片之后,图片不显示,只显示蓝色(挺重要的问题)   需要通过如下代码设置图片:
[button setImage:[[UIImage imageNamed:@"2.jpeg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];

imageWithRenderingMode:,它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。该枚举中包含下列值:

  1. UIImageRenderingModeAutomatic  // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
  2. UIImageRenderingModeAlwaysOriginal  // 始终绘制图片原始状态,不使用Tint Color。
  3. UIImageRenderingModeAlwaysTemplate  // 始终根据Tint Color绘制图片,忽略图片的颜色信息。
  4. renderingMode属性的默认值是UIImageRenderingModeAutomatic

12.通过出发自定义cell上的button 获取该cell的IndexPath:

UITableViewCell *cell = (UITableViewCell *)sender.superview.superview;
NSIndexPath *index = [self.tableView_Follow indexPathForCell:cell];

13. 计算UIlabel文字的高度:

计算UILabel文字高度的时候,

使用方法:- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context实现

NSStringDrawingOptions:如果是在多行的情况下,至少要包括:NSStringDrawingUsesLineFragmentOrigin、NSStringDrawingUsesFontLeading

- (CGSize)labelAutoWithText:(NSString *)text FontSize:(NSInteger)fontSize MaxSize:(CGSize)maxSize{
NSDictionary *dic = @{
NSFontAttributeName:[UIFont systemFontOfSize:]//字号的名字
};
return [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine attributes:dic context:nil].size;
}

14.KVO设计模式:

原博地址:http://my.oschina.net/caijunrong/blog/510701

Key Value Observing, 顾名思义就是一种observer 模式用于监听property的变化,KVO跟NSNotification有很多相似的地方, 用addObserver:forKeyPath:options:context:去start observer, 用removeObserver:forKeyPath:context去stop observer, 回调就是observeValueForKeyPath:ofObject:change:context:。

KVO 的实现也依赖于 Objective-C 强大的 Runtime 。

15.NavigationBar的一些修改设置:

1> 将系统NavigationBar上的返回按钮的文字去掉(文字是前一个控制器的title) 只留下箭头

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-, ) forBarMetrics:UIBarMetricsDefault];

2> 给backBarButtonItem设置图片:

 // 返回按钮
UIImage *img = [UIImage imageNamed:@"back"];
img = [img imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.navigationController.navigationBar.backIndicatorImage = img;
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = img;
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
// 将后面的文字偏移,进行隐藏
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-, ) forBarMetrics:UIBarMetricsDefault];

barTintColor:bar的背景色

TintColor:按钮的颜色

。。

项目知识点.Part2的更多相关文章

  1. BBS项目知识点汇总

    目录 bbs项目知识点汇总 一. JavaScript 1 替换头像 2 form表单拿数据 3 form组件error信息渲染 4 添加html代码 5 聚焦操作 二 . html在线编辑器 三 . ...

  2. Django项目知识点汇总

    目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九.COOKIE 与 SES ...

  3. 项目知识点.Part1

    1. storyboard中添加scrollview: 先添加scrollView,进行约束 添加View 进行约束 相对于scrollView 如果水平滑动:设置vertically in Cont ...

  4. stylus项目知识点

    1.在项目中,引入.sty文件的时候,用来下面方式 @import "~common/stylus/variable.styl" ~ 是stylus的写法,参考https://gi ...

  5. Django blog项目知识点总结

    数据库操作部分 当我们在Django项目中的models.py下写好创建表的代码后.为了创建好这些数据库表,我们再一次请出我的工程管理助手 manage.py.激活虚拟环境,切换到 manage.py ...

  6. 项目知识点.Part3

    内存管理: 基本数据类型或者Core Foundation对象都没有引用计数 主线程会自动创建释放池,子线程需要手动创建释放池. 具体的区别:http://www.cnblogs.com/langti ...

  7. react native定报预披项目知识点总结

    1.TextInput组件对安卓的适配问题 textInput 在iOS 显示正常,但是在android下会出现下横线,并且字会被遮盖 因此一般都这么用该组件 <TextInput style= ...

  8. vue项目知识点总结

    一.vue中如何获取select被选中的id和对应的值. <!-- 下拉框 --> <div v-show="moreStore" class="sel ...

  9. blog项目知识点梳理

    1.获取图片验证码: def get_validCode_img(request): # 方式1: # import os # path= os.path.join(settings.BASE_DIR ...

随机推荐

  1. oracle hints

    oracle hints 今天是2013-10-08,对于oracle hint有很多,具体可以参考联机手册: http://docs.oracle.com/cd/E11882_01/server.1 ...

  2. CentOS让root用户可以SSH登录

    一.说明     Solaris 10 出于安全原因,默认参数很严格,禁止root用户直接使用ssh登陆 二.处理     1.可以先用非root的帐户,登陆到ssh后,su成root     2.如 ...

  3. 浅谈qmake之pro、pri、prf、prl文件

    浅谈qmake之pro.pri.prf.prl文件 转载自:http://blog.csdn.net/dbzhang800/article/details/6348432 尽管每次和cmake对比起来 ...

  4. 原生JavaScript的省市县三级联动

    三级联动是我们写表单时必不可少的,比如在写收货地址时,就用到他了,最近在看原生JavaScript,从基础写起,待完善,以后再写个jquery版的. <!DOCTYPE html> < ...

  5. AngularJS的开发工具---yeoman 简易安装

    AngularJS 不错,yeoman作为推荐开发工具,网上的安装步骤较烦,这里给出简易步骤. 1.安装 Ruby     自己到 Ruby 官方下载最新安装包: http://rubyinstall ...

  6. TPL中的task并不是thread

    Tasks are not Threads - The Brain Dump用了一个非常简单直观的例子说明了task和thread并不是一回事(尽管你调用Task.Run一般会在线程池上启一个线程帮你 ...

  7. VS2012 win7 修改TFS登陆账号的方法

    .修改登陆账号: 在网上搜了好多,都没有找到解决方法,自己琢磨了一会找到了修改登陆TFS(Team Foundation Server)(团队资源管理器)的账号,和大家分享一下吧. 点击“开始”--“ ...

  8. AlphaDict 软件公布

    今天 Release 了 1.1. 主要是移植到了 window 平台, 无须安装,直接执行. 对 UI 又一次进行了设计,应该比之前好看多了. 加入了 生词本 功能,方便 学习外语. ------- ...

  9. Android 微信SDK分享功能中的最全过程步骤分析

    在前面有一章已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其中关于在自己应用分享说得很简单,本文作者也是经过一番折腾才弄成功,为了以后让大家都少走弯路,决定在这里从头到尾介绍怎么在 ...

  10. UVALive3713-Astronauts(2-SAT)

    题目链接 题意:有A.B.C3个任务分配给n个宇航员,当中每一个宇航员恰好分配一个任务.如果n个宇航员的平均年龄为x,仅仅有年龄大于x的才干领取A任务:仅仅有年龄严格小于x的才干领取B任务,而任务C没 ...