必威-必威-欢迎您

必威,必威官网企业自成立以来,以策略先行,经营致胜,管理为本的商,业推广理念,一步一个脚印发展成为同类企业中经营范围最广,在行业内颇具影响力的企业。

pragma mark - 03 获取沙盒各个文件路径,pragma mark

2019-10-05 01:10 来源:未知

pragma mark 概念

/** 1. 如何正确的编写.h文件 #ifndef __ZH__H__ // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏 // 如果满足 会把下面的东西全部编译到文件去 #define __ZH__H__ // 定义一个叫做 __ZH__H__ 的宏 // 加法运算 // v1, v2需要参与运算的数据 int sum(int v1, int v2); #endif 2. 如何防止循环拷贝 A拷贝B,B拷贝A 循环拷贝出现 #include nested too deeply 嵌套太深  张三包含李四 李四包含张三 (一双筷子 你拿一个我拿一个 谁都用不了) 解决办法 单方导入 3.间接拷贝问题 A拷贝B , B拷贝C , C拷贝 */
pragma mark — 11
pragma mark - 11 如何设置自定义字体

点击走入博客

pragma mark - 02 tableViewCell的刷新
全局刷新:[self.tableView reloadData];
局部刷新:NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationBottom];
//刷新第 0 组的第 row 行
查看目录
01 解决UICollectionView点击手势与didSelected方法冲突
02 id特性的运用
03 标签控制器标签栏设置背景
04 设置图片的渲染模式
05 UITableViewCell的点击效果设置
06 UITableView 滑动遇到的小问题
07 运行突然出现you don’t have permission to view it错误
08 设置UITableViewCell的分割线最简单的方法
09 利用导航栏跳转时隐藏底部的tabBar栏
10 直接设置导航栏中间标题的字体大小和颜色
11 如何设置自定义字体
12 AFNetWorking 请求数据报”Request failed: unacceptable content-type: text/plain” 错误解决方法

pragma mark 代码

#include <stdio.h>#include "zs.h" // int sum(int v1, int v2);#ifndef __ZH__H__ // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏 // 如果满足 会把下面的东西全部编译到文件去#define __ZH__H__ // 定义一个叫做 __ZH__H__ 的宏// 加法运算// v1, v2需要参与运算的数据int sum(int v1, int v2);#endif// 函数可以重复声明,不可以重复定义//void test();//void test();//void test();//void test();//#include "zs.h" // int sum(int v1, int v2);#pragma mark 下面的代码 因为上面已经定义过了 所以下面的代码 全部都不会加入到编译文件里面#ifndef __ZH__H__ // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏 // 如果满足 会把下面的东西全部编译到文件去#define __ZH__H__ // 定义一个叫做 __ZH__H__ 的宏// 加法运算// v1, v2需要参与运算的数据int sum(int v1, int v2);#endif// 重复导入会降低编译效率//#include "ls.h" /** #include <> <> 会先去编译器环境下查找,找不到再去系统的环境下查找 #include "" "" 会先在当前文件查找,找不到再去编译器环境下查找,找不到再去系统的环境下查找 作用: 将""或者<>中的内容完全拷贝过来 注意: 如何正确的编写.h文件 如何防止循环拷贝 间接拷贝问题 ru */int main(){ printf("sum = %in",sum; printf("minus = %in",minus; return 0;}void test(){ printf("000000n");}

//// 为了防止重复导入,一般情况下会在.h中添加上,头文件卫士////#ifndef __ZH__H__ // 判断是否 "没有" 定义了名称叫做 __ZH__H__ 的宏 // 如果满足 会把下面的东西全部编译到文件去//#define __ZH__H__ // 定义一个叫做 __ZH__H__ 的宏// 加法运算// v1, v2需要参与运算的数据int sum(int v1, int v2);#include "ls.h" // // #include nested too deeply 嵌套太深  解决办法 单方导入//#endif

#include "zs.h"int sum(int v1, int v2){ // 先用 v1 - v2 然后再加上 v1 int res = minus + v1; return res;// return v1 + v2;}

#include "ls.h"int minus(int v1,int v2){ // 先将两个数相加,然后再减去v2 int res = sum - v2; return res;// return v1 - v2;}

// 减法运算// v1,v2 是需要参与运算的数据int minus(int v1,int v2);//#include "zs.h"
pragma mark — 07 禁绝选拔横屏
苹果手机是默认三个方向的
Portrait , Landscape Left, Landscape Right
在General中的Device Orientation中的Landscape Left和Landscape Right不勾选就好了
pragma mark - 07
  • 推迟实施
 //1.延迟执行的第一种方法
    [self performSelector:@selector(task) withObject:nil afterDelay:2.0];

    //2.延迟执行的第二种方法
    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(task) userInfo:nil repeats:NO];

 //3.延迟执行的第三种方法--GCD
// dispatch_queue_t queue = dispatch_get_main_queue();//在主线程中
 dispatch_queue_t queue = dispatch_get_global_queue(0, 0);//全局并发队列(在异步线程中执行)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), queue, ^{
        [self task];
    });
pragma mark - 04 总计文字尺寸
  • @param text 供给总结尺寸的文字
  • @param font 文字的字体
  • @param maxSize 文字的最大尺寸
- (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize{
NSDictionary *attrs = @{NSFontAttributeName : font};return [text boundingRectWithSize:maxSize options:
NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}
之后调用上面方法就可以根据文字内容判断文件占用的尺寸了(宽和高),例如:
CGSize nameSize = [self sizeWithText:self.status.name font:MJNameFont maxSize:CGSizeMake(MAXFLOAT,MAXFLOAT)];
MAXFLOAT 表示无限大
pragma mark -- 04 设置图片的渲染方式
  • 有次给导航栏的动手按键设置了一张图纸,结果只体现了一个朱红的图纸,查了一晃,原本是系统渲染在添乱
直接给按钮设置图片是不行的,会被渲染为蓝色
[rightItem setImage:[UImage imageName:@"save"]];
我们可以单独设置一下图片的渲染模式
 UIImage *rightImage = [UIImage imageNamed:@"save.png"];
    //设置图像的渲染样式
    rightImage = [rightImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
   [rightItem setImage:rightImage];
//渲染模式  
 UIImageRenderingModeAutomatic  // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。  
 UIImageRenderingModeAlwaysOriginal   // 始终绘制图片原始状态,不使用Tint Color。  
 UIImageRenderingModeAlwaysTemplate   // 始终根据Tint Color绘制图片,忽略图片的颜色信息。  
pragma mark -- 01 自定义导航栏左上角回来按键后,再次来到失效的消除
解决方法是在给自定义item初始化时就添加一个监听方法
 //导航左边按钮
    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithTitle:@"" style:UIBarButtonItemStyleDone target:self action:@selector(popTORootController)];
//监听方法
-(void)popTORootController
{
   [self.navigationController popViewControllerAnimated:YES];
}

翻开提示

01 layoutSubviews调用的调用时机
02 Color颜色宏定义
03 视图的生命周期
04 UIImageView填充模式
05 文字内容换行
06 把NSString格式的日期转换为NSDate
07 延迟执行
08 加载plist文件
09 常用宏定义
10 获得当前界面的控制器
11 如何设置自定义字体
12 进程和线程的简单介绍
13 从xib创建的cell注册方法
14.label的设置圆角的区别
pragma mark - 14 测量检验某段代码实行功用
#在点击屏幕的这个方法中用for循环创建10000个Person类对象,测试其执行时间
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        NSDictionary *dict = @{@"name":@"jiang",@"age":@"18"};
    //获取当前时间
    NSTimeInterval start = CACurrentMediaTime();
       for (int i = 0; i < 10000; i++) {
        Person *per = [Person personWithDict:dict];
    }
     NSLog(@"%f",CACurrentMediaTime() - start);
  }
pragma mark - 11 如何设置自定义字体

辉少字体设置的博客

pragma mark -- 02 关于tableViewCell上的开关状态重用难点
最近做的项目中要求有每个cell上有个提醒按钮,以提醒用户在特定的时间做什么事情。这个按钮就存在选中和不选中状态,直接设置的话会导致cell的循环引用,接下来是解决方法有点多
1.给模型写一个BOOL值记录按钮状态 
/**提醒按钮的判断*/
@property (nonatomic , assign) BOOL isMarked;
2.在自定义cell中写一个代理方法(cell.h中)
#pragma mark -- 1.写个协议(解决点击提醒按钮后,循环引用的问题)
@protocol JJChannelDetailsCellDelegate <NSObject>
//实现的方法
-(void)channelCellIsMarked:(BOOL)isMarked Cell:(JJChannelDetailsCell *)cell;
@end
#pragma mark -- 2 定义代理属性
/**代理属性*/
@property (nonatomic , weak) id<JJChannelDetailsCellDelegate> delegate;
3.cell.m中(准备工作是将提醒按钮从xib中拖属性和方法出来)
#pragma mark -- 提醒按钮的点击方法
- (IBAction)clickRemindBtn:(UIButton *)sender {
    [sender setSelected:sender.selected ? false : true]; #pragma mark -- 3.判断代理者是否遵守了代理协议,如果遵守了就做事情
    if ([_delegate respondsToSelector:@selector(channelCellIsMarked:Cell:)]) {
        //如果遵守了代理协议,就把那个按钮的选中状态和当前的cell传过去
        [_delegate channelCellIsMarked:sender.selected Cell:self];
    }
}
4viewController.m中(遵守协议并实现协议方法)
#pragma mark -- 自定义cell的代理方法,用于解决提醒按钮点击后的循环引用
-(void)channelCellIsMarked:(BOOL)isMarked Cell:(JJChannelDetailsCell *)cell
{
    //根据tableView的这个方法拿到
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    if(_channelDetailsArrs && _channelDetailsArrs.count)
    {
        JJChannelDetailsModel *model = [_channelDetailsArrs objectAtIndex:indexPath.row];
        model.isMarked = isMarked;
    }
}
5.最后在cell.m的模型的set方法中给按钮状态赋值
 //重新给提醒按钮的状态赋值
    self.remindBtn.selected = channelDetail.isMarked;
pragma — mark - 06
  • 把NSString格式的日期转变为NSDate
  • 日期格式转变对应标识
// 时间字符串
NSString *string = @"2015-11-20 09:10:05";

// 日期格式化类(用这个类来转换)
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置日期格式(必须告诉它你想要转换为何种日期格式)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
NSDate *date = [fmt dateFromString:string];
NSLog(@"%@", date);
pragma mark - 09 UICollectionView相关知识
// 1.每个 cell 的尺寸
layout.itemSize = CGSizeMake(80, 80);
// 2.设置 cell 之间的水平间距
layout.minimumInteritemSpacing = 0;
// 3.设置 cell 之间的垂直间距
layout.minimumLineSpacing = 10;
// 4.设置所有 cell 组成的一个整体与屏幕(ViewController)四周距离
layout.sectionInset =UIEdgeInsetsMake(layout.minimumLineSpacing, 0, 0, 0);

// 5.注册 cell(告诉 collectionView 将来创建怎样的 cell)
//通过 xib 自定义的 cell
UINib *nib = [UINib nibWithNibName:@"MJProductCell" bundle:nil];
[self.collectionView registerNib:nib forCellWithReuseIdentifier:@"cell"];

//使用默认的 UICollectionViewCell
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:MJProductCellID];
pragma mark -- 06 UITableView 滑动蒙受的小标题
  • UITableView 滑动不到最尾巴部分,结果开采是从未减去标签栏的冲天
//必须要把49:标签栏的高度减去
_tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 99, self.view.mj_width,  self.view.mj_height - 99 - 49) style:UITableViewStylePlain];
TAG标签:
版权声明:本文由必威发布于必威-编程,转载请注明出处:pragma mark - 03 获取沙盒各个文件路径,pragma mark