iOS學習資料五

1、控制屏幕旋轉(zhuǎn),在控制器中寫

/** 是否支持自動轉(zhuǎn)屏 */

- (BOOL)shouldAutorotate {

return YES;

}

/** 支持哪些屏幕方向 */- (UIInterfaceOrientationMask)supportedInterfaceOrientations {

return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;

}

2、獲取app緩存大小

- (CGFloat)getCachSize {

NSUInteger imageCacheSize = [[SDImageCache sharedImageCache] getSize];

//獲取自定義緩存大小

//用枚舉器遍歷 一個文件夾的內(nèi)容

//1.獲取 文件夾枚舉器

NSString *myCachePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];

NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:myCachePath];

__block NSUInteger count = 0;

//2.遍歷

for (NSString *fileName in enumerator) {

NSString *path = [myCachePath stringByAppendingPathComponent:fileName];

NSDictionary *fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];

count += fileDict.fileSize;//自定義所有緩存大小

}

// 得到是字節(jié)? 轉(zhuǎn)化為M

CGFloat totalSize = ((CGFloat)imageCacheSize+count)/1024/1024;

return totalSize;

}

3、清理app緩存

- (void)handleClearView {

//刪除兩部分

//1.刪除 sd 圖片緩存

//先清除內(nèi)存中的圖片緩存

[[SDImageCache sharedImageCache] clearMemory];

//清除磁盤的緩存

[[SDImageCache sharedImageCache] clearDisk];

//2.刪除自己緩存

NSString *myCachePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];

[[NSFileManager defaultManager] removeItemAtPath:myCachePath error:nil];

}

4、模型轉(zhuǎn)字典

static NSSet *classes;

- (NSMutableDictionary *)getParameterDictionary {

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

Class c = self.class;

while (c) {

unsigned count;

objc_property_t *properties = class_copyPropertyList([c class], &count);

for (int i = 0; i < count; i++) {

NSString *key = [NSString stringWithUTF8String:property_getName(properties[i])];

dict[key] = [self valueForKey:key];

}

free(properties);

// 獲得父類

c = class_getSuperclass(c);

if ([self isClassFromFoundation:c]) break;

}

return dict;

}

- (BOOL)isClassFromFoundation:(Class)c

{

if (c == [NSObject class] || c == [NSManagedObject class]) return YES;

__block BOOL result = NO;

[[self foundationClasses] enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) {

if ([c isSubclassOfClass:foundationClass]) {

result = YES;

*stop = YES;

}

}];

return result;

}

- (NSSet *)foundationClasses

{

if (classes == nil) {

// 集合中沒有NSObject,因為幾乎所有的類都是繼承自NSObject,具體是不是NSObject需要特殊判斷

classes = [NSSet setWithObjects:

[NSURLclass],? ? ?

?? ? ? ? ? ? ? ? ? ? ? ? [NSDateclass],? ??

? ? ? ? ? ? ? ? ? ? ? ? ? [NSValueclass],? ?

?? ? ? ? ? ? ? ? ? ? ? ? ? [NSDataclass],? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?[NSErrorclass], ? ? ??

?? ? ? ? ? ? ? ? ? ? ? [NSArrayclass],

? ? ? ? ? ? ? ? ? ? ? [NSDictionaryclass],?

?? ? ? ? ? ? ? ? ? ? ? ? ? ? [NSStringclass],??


?? ? ? ? ? ? ? ? ? ? [NSAttributedString class], nil]; ?

??}

return classes;

}

5、交換兩個方法實現(xiàn)

Class aClass = [self class];

SEL originalSelector = @selector(viewWillAppear:);

SEL swizzledSelector = @selector(xxx_viewWillAppear:);

Method originalMethod = class_getInstanceMethod(aClass, originalSelector);

Method swizzledMethod = class_getInstanceMethod(aClass, swizzledSelector);

BOOL didAddMethod =

class_addMethod(aClass,

originalSelector,

method_getImplementation(swizzledMethod),

method_getTypeEncoding(swizzledMethod));

if (didAddMethod) {

class_replaceMethod(aClass,

swizzledSelector,

method_getImplementation(originalMethod),

method_getTypeEncoding(originalMethod));

} else {

method_exchangeImplementations(originalMethod, swizzledMethod);

}

6、打印百分號和引號

NSLog(@"%%");

NSLog(@"\"");

7、幾個常用權(quán)限判斷

if ([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied) {

NSLog(@"沒有定位權(quán)限");

}

AVAuthorizationStatus statusVideo = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

if (statusVideo == AVAuthorizationStatusDenied) {

NSLog(@"沒有攝像頭權(quán)限");

}

/是否有麥克風權(quán)限

AVAuthorizationStatus statusAudio = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];

if (statusAudio == AVAuthorizationStatusDenied) {

NSLog(@"沒有錄音權(quán)限");

}

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

if (status == PHAuthorizationStatusDenied) {

NSLog(@"沒有相冊權(quán)限");

}

}];

8、獲取手機型號

+ (NSString *)getDeviceInfo {

struct utsname systemInfo;

uname(&systemInfo);

NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];

if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";

if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";

if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";

if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";

if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";

if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4";

if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";

if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";

if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";

if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";

if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";

if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";

if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";

if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";

if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";

if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";

if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";

// 日行兩款手機型號均為日本獨占,可能使用索尼FeliCa支付方案而不是蘋果支付

if ([platform isEqualToString:@"iPhone9,1"])? ? return @"國行、日版、港行iPhone 7";

if ([platform isEqualToString:@"iPhone9,2"])? ? return @"港行、國行iPhone 7 Plus";

if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";

if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";

if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";

if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";

if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";

if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";

if ([platform isEqualToString:@"iPad1,1"]) return @"iPad 1G";

if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2";

if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";

if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2";

if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";

if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini 1G";

if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini 1G";

if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini 1G";

if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3";

if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3";

if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3";

if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4";

if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";

if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4";

if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air";

if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air";

if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air";

if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G";

if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G";

if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G";

return platform;

}

9、長按復制功能

- (void)viewDidLoad

{

[self.view addGestureRecognizer:[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(pasteBoard:)]];

}

- (void)pasteBoard:(UILongPressGestureRecognizer *)longPress {

if (longPress.state == UIGestureRecognizerStateBegan) {

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

pasteboard.string = @"需要復制的文本";

}

}

10、cocoapods升級

在終端執(zhí)行 sudo gem install -n / usr / local / bin cocoapods --pre

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容