iOS专题

iOS 开发中收集的一些比较实用的小方法(持续更新)

2017-03-16  本文已影响23人  ZPCoder

1.解决建立在scrollView上及其子类上的按钮的点击效果不明显的方法(_talbelView为scrollView的子类视图)

  _tableView.delaysContentTouches = NO;
        if ([UIDevice currentDevice].systemVersion.intValue >= 8) {
            for (UIView *currentView in _tableView.subviews) {
                if ([currentView isKindOfClass:[UIScrollView class]]) {
                    ((UIScrollView *)currentView).delaysContentTouches = NO;
                    break;
                }
            }
        }

2.影藏顶部手机状态栏

    - (BOOL)prefersStatusBarHidden{

    return YES;
}

3.解决 AFNetworking 中get请求中拼接汉子报错问题(被遗弃了 ,但还是可以实用)

url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

4.iOS10 隐私权限设置问题(Crash)

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string></string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>蓝牙权限</string>
    <key>NSSpeechRecognitionUsageDescription</key>
    <string>语音识别权限</string>
    <key>NSSiriUsageDescription</key>
    <string>Siri权限</string>
    <key>NSRemindersUsageDescription</key>
    <string></string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>相册权限</string>
    <key>kTCCServiceMediaLibrary</key>
    <string></string>
    <key>NSMotionUsageDescription</key>
    <string>运动权限</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>麦克风权限</string>
    <key>NSAppleMusicUsageDescription</key>
    <string>音乐权限</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>地理位置权限</string>
    <key>NSLocationUsageDescription</key>
    <string>地理位置权限</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>地理位置权限</string>
    <key>NSHomeKitUsageDescription</key>
    <string></string>
    <key>NSHealthUpdateUsageDescription</key>
    <string>健康权限</string>
    <key>NSHealthShareUsageDescription</key>
    <string>健康权限</string>
    <key>NSContactsUsageDescription</key>
    <string>通讯录权限</string>
    <key>NSCameraUsageDescription</key>
    <string>摄像头权限</string>
    <key>NSCalendarsUsageDescription</key>
    <string>日历权限</string>

5.缩放图片的方法

#pragma mark- 缩放图片
-(UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
{//scaleSize 为缩小的倍数,高和宽都缩小这个倍数,相当于整体大小缩小他的平方陪,需要的话,可以在这里边吧scaleSize开方
UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize,image.size.height*scaleSize));
    [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height *scaleSize)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return scaledImage;
}

6.延迟执行的方法

[self performSelector:@selector(FullTimerAction) withObject:nil afterDelay:3];

7.//获取状态栏的高度

 CGFloat statheight = [[UIApplication sharedApplication] statusBarFrame].size.height;

8.屏幕截图 (两种)

1.截取为UIView格式的
// - (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates NS_AVAILABLE_IOS(7_0);
上面是屏幕截图的方法
- (void)viewDidLoad {
    [super viewDidLoad];

   self.iamgeView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, 200)];
    UIImage *image =[ UIImage imageNamed:@"112"];
    self.iamgeView.image = image;
    [self.view addSubview:self.iamgeView];


    UIView *snapView = [self.iamgeView  snapshotViewAfterScreenUpdates:YES];
    snapView.frame =CGRectMake(0, 400, self.view.frame.size.width, 200);
    [self.view addSubview:snapView];

}

2.截取为UIImage格式的
-(UIImage *)cutOutViewWithView:(UIView*)TOP_VIEW
{
    UIGraphicsBeginImageContextWithOptions(TOP_VIEW.frame.size, NO, [[UIScreen mainScreen] scale]);
         [TOP_VIEW.layer renderInContext:UIGraphicsGetCurrentContext()];
    // 此方法,除却iOS8以外其他系统都OK
    [TOP_VIEW drawViewHierarchyInRect:TOP_VIEW.bounds afterScreenUpdates:NO];
    UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return snapshot;
}

9.使得控件旋转的方法(如下图)

  UILabel * LabelMonth = [[UILabel alloc]initWithFrame:self.frame];

        LabelMonth.transform = CGAffineTransformMakeRotation(M_PI * 0.3);
        [self addSubview:LabelMonth];
屏幕快照 2016-08-16 15.58.07.png

10.tableView中cell的高度自适应

self.tableView.estimatedRowHeight = 68;
self.tableView.rowHeight = UITableViewAutomaticDimension;

11.数据写入本地和读取比较实用的方法

//数组写入
- (void)writeToWithMemory:(NSMutableArray *)array {


    // 沙盒路径
    NSString *path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
    // 文件路径
    NSString *fileName=[path stringByAppendingPathComponent:@"userInfo.plist"];
    BOOL isWrite = [array writeToFile:fileName atomically:YES];
    if (isWrite) {


       [self createAlerViewWithTitle:@"友情提示" message:@"成功"];
    }else{
        [self createAlerViewWithTitle:@"友情提示" message:@"失败"];

    }
}

//数组读取
- (NSMutableArray *)readArray {

    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"userInfo.plist"];
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];
    return array;
}
//创建弹窗
-(void)createAlerViewWithTitle:(NSString *)title message:(NSString *)message{

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:title message:message delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];

    [alert show];


}

12.监听键盘的弹出后改变控件的frame

//    添加监听,键盘的弹出
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardWillShowNotification object:nil];

//    键盘的收回
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHidden:) name:UIKeyboardWillHideNotification object:nil];

#pragma mark - 键盘的回调方法
//弹出
-(void)keyboardShow:(NSNotification *)notification{
//    得到键盘的高度
    CGRect keyBoardRect =[[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey]  CGRectValue];
//    键盘高度
    float keyboardHeight =keyBoardRect.size.height;

    CGRect bounds=self.view.bounds;
    self.view.bounds=CGRectMake(0, keyboardHeight, bounds.size.width, bounds.size.height);


}
//回收
-(void)keyboardHidden:(NSNotification *)notification{

    self.view.bounds=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

}

13.毛玻璃效果

//毛玻璃效果
 UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc]initWithEffect:effect];
    visualEffectView.alpha = 0.9;
    [visualEffectView setFrame:self.view.frame];
    [self.view addSubview:visualEffectView];

14.视图转换为图片格式方法

//将视图转换为UIImage格式
- (UIImage*) imageWithUIView:(UIView*) view
{
    UIGraphicsBeginImageContext(view.bounds.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [view.layer renderInContext:ctx];
    UIImage* tImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return tImage;
}

15.模态视图--从N级退出到1级视图

 if ([self respondsToSelector:@selector(presentingViewController)]){
            [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

        }

        else {

            [self.parentViewController.parentViewController dismissViewControllerAnimated:YES completion:nil];


        }
上一篇 下一篇

猜你喜欢

热点阅读