iOS开发过程中常用代码

1.访问相机相册

#pragma mark 拍照
- (void)takePhoto {
    if ([UIImagePickerController isSourceTypeAvailable:(UIImagePickerControllerSourceTypeCamera)]) {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES; //是否可编辑
        //摄像头
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentViewController:picker animated:YES completion:nil];
        
        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied) {
            //无权限
            UIAlertController *alert = [YLAlertController createOneButtonAlertViewWithTitle:nil message:@"请在iPhone的\"设置-隐私\"选项中,允许迪动访问你的摄像头" buttonTitle:@"确定" buttonAction:nil];
            [picker presentViewController:alert animated:YES completion:nil];
        }
    }
}

#pragma mark 从相册选择
- (void)chooseFromAlbum {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES;
        //打开相册选择照片
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentViewController:picker animated:YES completion:nil];
    }
}

#pragma mark 相机相册选择后的代理事件,image即为选择的图片对象
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    //得到图片
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [self dismissViewControllerAnimated:YES completion:nil];
}

 2.自己封装的网络请求的调用

 NSDictionary *parameters = @{
                                 @"uid":USER_ID,
                                 @"token":USER_CURRENT_TOKEN,
                                 };
    [[NetRequest sharedRequest] postURL:[<#请求地址#> getFullRequestPath] parameters:parameters success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"请求结果是%@",responseObject);
        if ([responseObject isRequestSuccess]) {
            
        } else {
            HUD_TEXTONLY([responseObject requestErrorInfo]);
        }
    } failed:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        HUD_FAILED(REQUEST_FAILED_INFO);
    }];

 3.注册键盘弹出和消失的通知

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

#pragma mark 键盘的通知
- (void)keyboardWillShow:(NSNotification *)noti {
    NSDictionary *dict = noti.userInfo;
    NSValue *frameValue = [dict valueForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect frame = [frameValue CGRectValue];
    CGFloat height = frame.size.height;
    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, height, 0);
}

- (void)keyboardWillHide:(NSNotification *)noti {
    self.tableView.contentInset = UIEdgeInsetsZero;
}

 4.设置tableView

- (UITableView *)tableView {
    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        _tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        }];
        
        _tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
            
        }];
        
        [self.view addSubview:_tableView];
        [_tableView mas_updateConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self.view);
        }];
    }
    return _tableView;
}


#pragma mark UITableViewDelegate,UITableViewDataSource 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return <#NSInteger#>;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return <#NSInteger#>;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *reuseIdentifier = @"";
    <#UITableViewCell#> *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (!cell) {
        cell = [[<#UITableViewCell#> alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
    }
    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return <#expression#>;
}

 5.获取当前的年月日等

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags =  NSCalendarUnitYear |
    NSCalendarUnitMonth |  NSCalendarUnitDay |
    NSCalendarUnitHour |  NSCalendarUnitMinute |
    NSCalendarUnitSecond | NSCalendarUnitWeekday;
    NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:[NSDate date]];
    NSInteger year = [dateComponent year];    
    NSInteger month = [dateComponent month];

 6.UITableView嵌套UITextView时无法通过修改tableView的contentInset来让tableView自动上移,避免键盘遮挡textView,可用下面方法解决#pragma mark 键盘的通知

#pragma mark 键盘的通知
- (void)keyboardWillShow:(NSNotification *)noti {

    NSDictionary *dict = noti.userInfo;
    NSValue *frameValue = [dict valueForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect frame = [frameValue CGRectValue];
    CGFloat height = frame.size.height;
    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, height, 0);
    if ([_explainTextView isFirstResponder]) {
        //将textView的frame转换为相对于tableView的frame
        CGRect frame1 = [_explainTextView convertRect:_explainTextView.frame toView:self.tableView];
        //height为键盘高度,(SCREEN_HEIGHT - 64 - frame1.origin.y - frame1.size.height)为textView底边距离屏幕底边的高度
        self.tableView.contentOffset = CGPointMake(0, height - (SCREEN_HEIGHT - 64 - frame1.origin.y - frame1.size.height));
    }
}

- (void)keyboardWillHide:(NSNotification *)noti {
    self.tableView.contentInset = UIEdgeInsetsZero;
}

 7.限制金额输入的方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@".0123456789"] invertedSet];
        NSString*filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
        BOOL basicTest = [string isEqualToString:filtered];
        if(!basicTest) {
            return NO;
        } else {
            if ([string isEqualToString:@"."]) {
                if ([textField.text isEqualToString:@""]) {
                    textField.text = @"0.";
                    return NO;
                } else if ([textField.text containsString:@"."]) {
                    return NO;
                }
            }
            NSRange myRange = [textField.text rangeOfString:@"."];
            if (myRange.length != 0) {
                if ([textField.text length]-myRange.location >= 3) {
                    if ([string isEqualToString:@""]) {
                        return YES;
                    } else {
                        return NO;
                    }
                }else {
                    return YES;
                }
            } else {
                return YES;
            }
        }
}

 

 8.UITextField密文输入时再次编辑内容不清空

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    //得到输入框的内容
    NSString * textfieldContent = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (textField == self.passwordTextField && textField.isSecureTextEntry ) {
        textField.text = textfieldContent;
        return NO;
    }
    return YES;
}

 

posted @ 2017-02-04 16:08  YouNeedCourage  阅读(258)  评论(0编辑  收藏  举报