iOS 项目开发笔记(实时更新)

self.navigationController.navigationBar.translucent=NO;  // 导航栏半透明属性
[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"daohang.jpg"]forBarMetrics:UIBarMetricsDefault];  // 导航栏上放背景图片
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFieldDidChange)name:@"UITextFieldTextDidChangeNotification"object:nil];
- (void)textFieldDidChange{
self.searchStr=self.searchTFd.text;
} // 实时获取textField输入内容
_Introduction_Lab= [[UILabelalloc]initWithFrame:CGRectMake(0,5,WIDTHOFMAIN/1.25,HEIGHTOFMAIN/10)];
_Introduction_Lab.enabled=NO;
_Introduction_Lab.font=[UIFontsystemFontOfSize:14];
_Introduction_Lab.text=@"限300字";
_Introduction_Lab.numberOfLines=0;
_Introduction_Lab.textColor= [UIColorlightGrayColor];
[self.contentTFdaddSubview:_Introduction_Lab];
- (void)textViewDidChange:(UITextView*)textView
{
if([textView.textlength] ==0) {
[_Introduction_LabsetHidden:NO];
}else{
[_Introduction_LabsetHidden:YES];
} } } // textView上加水印字
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
{
NSScanner*scanner= [NSScannerscannerWithString:string];
NSCharacterSet*numbers;
NSRangepointRange = [textField.textrangeOfString:@"."];
if( (pointRange.length>0) && (pointRange.location< range.location|| pointRange.location> range.location+ range.length) )
{
numbers = [NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"];
}
else
{
numbers = [NSCharacterSetcharacterSetWithCharactersInString:@"0123456789."];
}
if( [textField.textisEqualToString:@""] && [stringisEqualToString:@"."] )
{
returnNO;
}
shortremain =2;//默认保留2位小数
NSString*tempStr = [textField.textstringByAppendingString:string];
NSUIntegerstrlen = [tempStrlength];
if(pointRange.length>0&& pointRange.location>0){//判断输入框内是否含有“.”。
if([stringisEqualToString:@"."]){//当输入框内已经含有“.”时,如果再输入“.”则被视为无效。
returnNO;
}
if(strlen >0&& (strlen - pointRange.location) > remain+1){//当输入框内已经含有“.”,当字符串长度减去小数点前面的字符串长度大于需要要保留的小数点位数,则视当次输入无效。
returnNO;
}
}
NSRangezeroRange = [textField.textrangeOfString:@"0"];
if(zeroRange.length==1&& zeroRange.location==0){//判断输入框第一个字符是否为“0”
if(![stringisEqualToString:@"0"] && ![stringisEqualToString:@"."] && [textField.textlength] ==1){//当输入框只有一个字符并且字符为“0”时,再输入不为“0”或者“.”的字符时,则将此输入替换输入框的这唯一字符。
textField.text= string;
returnNO;
}else{
if(pointRange.length==0&& pointRange.location>0){//当输入框第一个字符为“0”时,并且没有“.”字符时,如果当此输入的字符为“0”,则视当此输入无效。
if([stringisEqualToString:@"0"]){
returnNO;
}
}
}
}
NSString*buffer;
if( ![scannerscanCharactersFromSet:numbersintoString:&buffer] && ([stringlength] !=0) )
{
returnNO;
}
returnYES;
}  // textField 判断输入的是否是数字  保留两位小数 用作输入金钱判断

AFN 图片上传

视频压缩

七牛云上传

获取手机内视频

获取视频第一帧

self.navigationItem.hidesBackButton=YES;    // 隐藏导航左按钮

cocoapods 相关错误 ,这位作者写的很实用,推荐 //www.greatytc.com/p/dfc7b93e67eb

       AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied)
        {
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"请您设置允许APP访问您的相册\n设置>隐私>相机" preferredStyle:UIAlertControllerStyleAlert];
            [self presentViewController:alertController animated:YES completion:nil];
            UIAlertAction *defauleAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
            [alertController addAction:defauleAction];
// 访问相机被拒绝

  ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];;
    if (author == ALAuthorizationStatusRestricted || author ==ALAuthorizationStatusDenied){
        //无权限 做一个友好的提示
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"请您设置允许APP访问您的相册\n设置>隐私>照片" preferredStyle:UIAlertControllerStyleAlert];
        [self presentViewController:alertController animated:YES completion:nil];
        UIAlertAction *defauleAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            [self.navigationController popViewControllerAnimated:YES];
            
        }];
        [alertController addAction:defauleAction];
        
        
        return ;
    } else {
        //打开相册
    }
// 访问相册被拒绝
#pragma mark 给pickerview设置字体大小和颜色等
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
    //可以通过自定义label达到自定义pickerview展示数据的方式
    UILabel* pickerLabel = (UILabel*)view;
    if (!pickerLabel){
        pickerLabel = [[UILabel alloc] init];
        pickerLabel.adjustsFontSizeToFitWidth = YES;
        pickerLabel.textAlignment = NSTextAlignmentCenter;
        [pickerLabel setFont:[UIFont boldSystemFontOfSize:25]];
    }
    pickerLabel.text=[self pickerView:pickerView titleForRow:row forComponent:component];//调用上一个委托方法,获得要展示的title
    return pickerLabel;
}
    label_one.font = [UIFont boldSystemFontOfSize:14];
lable字体加粗

模拟器运行报错[The request to open "your bundle id" failed]
报错详情The request was denied by service delegate (SBMainWorkspace) for reason:....等等解决方法

Paste_Image.png

将那个对号点没 就可以了

// textField弹键盘,然后回上一界面,键盘回收延迟问题
- (void)viewWillDisappear:(BOOL)animated
{
    [self.view endEditing:YES];
    [self.searchTFd resignFirstResponder];
    [super viewWillDisappear:YES];
}
// 如果是searchBar的话
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [self.view endEditing:YES];
    _m_key = searchBar.text;
    [self setupRefreshView];
}

        [array insertObject:@"" atIndex:0];
// 将元素添加到数组指定位置
    [array replaceObjectAtIndex:0 withObject:@""];

// 将替换数组指定位置元素

**8.****权限**
* 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
* 相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
* 相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?
* 通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
* 蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
* 语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?
* 日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?
* 定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
* 定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];//  创建系统级剪切板
     [pasteboard setString:@"10843"];
// 调用系统的剪切板 
uiscrollView 的分区pagingEnabled

// AppDelegate中弹出UIAlertController
UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"标题" message:@"内容" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *sureAction=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [alertController addAction:sureAction];

UIWindow *alertWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; alertWindow.rootViewController = [[UIViewController alloc] init]; alertWindow.windowLevel = UIWindowLevelAlert + 1; [alertWindow makeKeyAndVisible]; [alertWindow.rootViewController presentViewController:alertController animated:YES completion:nil];
self.automaticallyAdjustsScrollViewInsets = NO;
//    NavigationBar设置对UICollectionView的item显示偏移影响 ,导航栏对UICollectionView的影响  太坑了
    self.tableView =[[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStyleGrouped];
// 取消分区粘着效果  把尾分区高度设置为1  搞定
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0) {
        return CGSizeMake(WIDTHOFMAIN / 2, HEIGHTOFMAIN  / 3);
    }else{
        return CGSizeMake(WIDTHOFMAIN / 3, HEIGHTOFMAIN  / 3.5);
    }
}
// collectionView设置不同大小的item
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    if ([_crr[section] isEqualToString:@"知名品牌"]) {
        
  return  UIEdgeInsetsMake(15, 20, 0, 20); // 内边距
    
    }else{
        
    return UIEdgeInsetsMake(0, 0, 0, 0); // 内边距
    }
    
}
// 设置不同的内边距   相当于 flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); // 内边距

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(nonnull UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
    if ([_crr[section] isEqualToString:@"知名品牌"]) {
        
        return  15;// 内边距
        
    }else{
        
        return 0; // 内边距
    }
}
相当于    flowLayout.minimumInteritemSpacing = 0;

iOS重力感应,//www.greatytc.com/p/05b8c0e3ef8c  写的很全面,不用我在多介绍了😑
cell 里获取textField的输入内容
cellForRowAtIndexPath中    
    cell.textField.tag = indexPath.row;
[cell.textField addTarget:self action:@selector(textFieldWithText:) forControlEvents:UIControlEventEditingChanged];


-(void)textFieldWithText:(UITextField *)textfield
{
    NSLog(@"%@",textfield.text);
}
                    self.str = [arr componentsJoinedByString:@","];
// 数组中元素拼接成字符串用逗号隔开
iOS随机生成浮点数小数
  int x = arc4random() % 9;
    int y = (arc4random() % 10) + 10;
    NSString *str=[NSString stringWithFormat:@"%d.%d",y,x];
    CGFloat f =[str floatValue];
// 随机生成两个整数  在用小数点拼接  完美 哈哈😝
        [self.arr replaceObjectAtIndex:2 withObject:str];
// 修改数组中指定位置的元素
微信支付,支付失败,提示解析失败 
package=Sign=WXPay
注意 Sign=WXPay别有空格
    [[[UIApplication sharedApplication] keyWindow] addSubview:view];
// 添加视图在最上层  不在导航和tabBar框内
http://blog.csdn.net/qq_30600895/article/details/52329817
//  解决导航栏隐藏后切换黑闪问题

AFN解析报错Error=3840 ---是json数据问题 如果浏览器可以访问到数据,在AFN中不可以的话 去除转义字符试试

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes= [NSSet setWithObject:@"text/html"];
    
    [manager POST:_URL parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
        
        NSString * str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
        
        NSString * str2 = [str stringByReplacingOccurrencesOfString:@"\t" withString:@""];
        
        str2 = [str2 stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        
        str2 = [str2 stringByReplacingOccurrencesOfString:@"\r" withString:@""];
        
        
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
        
        NSLog(@"d11ic3t  =%@",dict);
        
        
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        
        NSLog(@"er1112ror =%@",error);
        
        
    }];
    
URLEncodedString 编码
  CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  
                                                              (CFStringRef)@"str",  
                                                              NULL,  
                                                              (CFStringRef)@"!*'();:@&=+$,/?%#[]",  
                                                              kCFStringEncodingUTF8)); 

URLDecodedString 解码
 (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)@"str", CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)) 
Xcode 格式化代码 control + i;
git clone --depth=1 https://code.aliyun.com/Magi/CocoaPods.git ~/.cocoapods/repos/master
cocoapods新的get源

iOS14 本地网络(Local Network)权限弹框审核被拒

cd到项目目录检查哪些文件使用了服务器连接
grep -r SimplePing .
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容

  • 说有人很会识人,无怪乎这个人很善于观察,并且,每个人的外表所体现的,就是你的内在修外,特别是一个人的长相,更能决定...
    毛雅阅读 354评论 0 0
  • RESideMenu之神坑公司出新项目需求是侧滑功能,鉴于侧滑三方很多,所以打算使用三方实现,精挑细选下选择了RE...
    程序H阅读 952评论 14 5
  • 文/简安宁 中式点心铺里,冒出袅袅炊烟。一天,从这儿开始了。 铺子已经被三三两两赶着上班、上学的人们淹没。牵着孙子...
    简安宁阅读 144评论 0 1
  • 整理完笔记,突发奇想去招聘网看看有关于自己专业的招聘信息。结果就如同当初师兄师姐所说的那样,真的不容乐观 ...
    张喵猫阅读 286评论 0 1