xcode13适配

This commit is contained in:
kai60
2021-10-30 15:23:22 +08:00
parent cb537f1949
commit 6029a5eb67
17 changed files with 480 additions and 39 deletions
@@ -0,0 +1,44 @@
//
// UIViewController+Navgation.h
// E-Mobile7
//
// Created by ldg on 2018/4/13.
// Copyright © 2018年 Weaver. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIViewController (Navgation)
/**
* 设置导航栏背景颜色
*/
- (void)setNavbgColorStr:(NSString *)colorStr;
/**
* 设置导航栏背景图片
*/
- (void)setNavbgImage:(UIImage *)image;
//获取
-(UIImage*)getNaveImage;
- (void)setNavbgColor:(UIColor *)color;
/**
* 设置导航栏文字颜色
*/
- (void)setNavTitleColor:(UIColor *)color;
//字体和颜色
- (void)setNavTitleTextAttributes:(NSDictionary*)attribute;
//字体
- (void)setNavTitleFont:(UIFont *)font;
- (UINavigationBarAppearance *)getNavgationAppearanceWithNavgationController:(UINavigationBar *)bar API_AVAILABLE(ios(13.0));
@end
@@ -0,0 +1,202 @@
//
// UIViewController+Navgation.m
// E-Mobile7
//
// Created by ldg on 2018/4/13.
// Copyright © 2018年 Weaver. All rights reserved.
//
#import "UIViewController+Navgation.h"
@implementation UIViewController (Navgation)
+ (UIColor *)colorWithHexString:(NSString *)stringToConvert
{
if ([stringToConvert hasPrefix:@"#"])
{
stringToConvert = [stringToConvert substringFromIndex:1];
}
float alpha=1.0;
if (stringToConvert.length>6&&![stringToConvert hasPrefix:@"0x"])//含有透明度
{
NSString*alphaString=[stringToConvert substringToIndex:2];
NSScanner *alphaScanner = [NSScanner scannerWithString:alphaString];
unsigned hex;
if (![alphaScanner scanHexInt:&hex])
{
alpha=1.0;
}
else
{
const char *hexChar = [alphaString cStringUsingEncoding:NSUTF8StringEncoding];
int hexNumber;
sscanf(hexChar, "%x", &hexNumber);
alpha=hexNumber/255.0;
}
}
NSScanner *scanner = [NSScanner scannerWithString:stringToConvert];
unsigned hexNum;
if (![scanner scanHexInt:&hexNum])
{
return [UIColor clearColor];
}
return [UIColor \
colorWithRed:((float)((hexNum & 0xFF0000) >> 16))/255.0 \
green:((float)((hexNum & 0xFF00) >> 8))/255.0 \
blue:((float)(hexNum & 0xFF))/255.0 alpha:alpha];
}
+ (UIImage *)createImageWithColor:(UIColor *)color
{
CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
- (void)setNavbgColorStr:(NSString *)colorStr
{
UIImage *image = [self.class createImageWithColor:[self.class colorWithHexString:colorStr]];
[self setNavbgImage:image];
}
- (void)setNavbgColor:(UIColor *)color
{
UIImage *image = [self.class createImageWithColor:color];
[self setNavbgImage:image];
}
- (void)setNavbgImage:(UIImage *)image
{
UINavigationController *nav = nil;
if ([self isKindOfClass:UINavigationController.class]) {
nav = (UINavigationController *)self;
}else{
nav = self.navigationController;
}
if (image && nav) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:nav.navigationBar];
apperar.backgroundImage = image;
nav.navigationBar.standardAppearance = apperar;
nav.navigationBar.scrollEdgeAppearance = apperar;
}else{
[nav.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
}
}
-(UIImage*)getNaveImage
{
UINavigationController *nav = nil;
if ([self isKindOfClass:UINavigationController.class]) {
nav = (UINavigationController *)self;
}else{
nav = self.navigationController;
}
if (nav) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:nav.navigationBar];
return apperar.backgroundImage;
}else{
return [nav.navigationBar
backgroundImageForBarMetrics:UIBarMetricsDefault];
}
}
return nil;
}
- (UINavigationBarAppearance *)getNavgationAppearanceWithNavgationController:(UINavigationBar *)bar
API_AVAILABLE(ios(13.0)){
if (@available(iOS 15.0, *)) {
if (bar.standardAppearance) {
return bar.standardAppearance;
}
if (bar.scrollEdgeAppearance) {
return bar.scrollEdgeAppearance;
}
return [[UINavigationBarAppearance alloc] init];
}
return nil;
}
- (void)setNavTitleColor:(UIColor *)color
{
UINavigationController *nav = nil;
if ([self isKindOfClass:UINavigationController.class]) {
nav = (UINavigationController *)self;
}else{
nav = self.navigationController;
}
if (color && nav) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:nav.navigationBar];
apperar.titleTextAttributes = @{NSForegroundColorAttributeName:color};
nav.navigationBar.standardAppearance = apperar;
nav.navigationBar.scrollEdgeAppearance = apperar;
}else{
nav.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:color};
}
}
}
- (void)setNavTitleFont:(UIFont *)font
{
UINavigationController *nav = nil;
if ([self isKindOfClass:UINavigationController.class]) {
nav = (UINavigationController *)self;
}else{
nav = self.navigationController;
}
if (font && nav) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:nav.navigationBar];
apperar.titleTextAttributes = @{NSFontAttributeName:font};
nav.navigationBar.standardAppearance = apperar;
nav.navigationBar.scrollEdgeAppearance = apperar;
}else{
nav.navigationBar.titleTextAttributes = @{NSFontAttributeName:font};
}
}
}
- (void)setNavTitleTextAttributes:(NSDictionary*)attribute
{
UINavigationController *nav = nil;
if ([self isKindOfClass:UINavigationController.class]) {
nav = (UINavigationController *)self;
}else{
nav = self.navigationController;
}
if (attribute && nav) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:nav.navigationBar];
apperar.titleTextAttributes = attribute;
nav.navigationBar.standardAppearance = apperar;
nav.navigationBar.scrollEdgeAppearance = apperar;
}else{
nav.navigationBar.titleTextAttributes = attribute;
}
}
}
@end
@@ -32,7 +32,7 @@
#import "SonNuoCenterViewController.h"
#import "ShopCertifyStausModel.h"
#import "CertificationShopModel.h"
#import "UIViewController+Navgation.h"
#import <SMS_SDK/SMSSDK.h>
@@ -105,7 +105,8 @@
LogInViewController*logvc=[[LogInViewController alloc]init];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:logvc];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
[app1.window makeToast:@"验证失败,密码不正确"];
@@ -118,7 +119,7 @@
DisconnectNetController *connectVC =[[DisconnectNetController alloc] init];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:connectVC];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}
@@ -128,7 +129,7 @@
DisconnectNetController *connectVC =[[DisconnectNetController alloc] init];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:connectVC];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
NSString *errstr = [NSString stringWithFormat:@"%@",err];
BLYLog(BuglyLogLevelWarn, errstr);
@@ -161,7 +161,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:ruSuncenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}else if ([devicemodel.type isEqualToString:DECICE_TYPE_JUNENGCC]){
@@ -175,7 +175,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:SongNuoBDcenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}else if ([devicemodel.type isEqualToString:DECICE_TYPE_RUSUN2A]){
@@ -185,7 +185,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:RunSun84center];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
} else if ([devicemodel.type isEqualToString:DECICE_TYPE_RUIMEI]) {
@@ -194,7 +194,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:ruimeiCenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}else if ([devicemodel.type isEqualToString:DECICE_TYPE_hotBar]) {
@@ -239,7 +239,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:none];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}
@@ -256,7 +256,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:twocontrolCenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
@@ -276,7 +276,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:threeControlCenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
@@ -302,7 +302,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:fourControlCenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}else if (timerAmount == 6){
@@ -314,7 +314,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app2=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:keliaicenterVC];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app2.window.rootViewController=nav;
@@ -340,7 +340,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:XuToCenter];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}
@@ -358,7 +358,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:songNu];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}
@@ -398,7 +398,7 @@
UIApplication*app=[UIApplication sharedApplication];
AppDelegate*app1=(AppDelegate*)app.delegate;
UINavigationController*nav=[[UINavigationController alloc]initWithRootViewController:blackVC];
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[nav setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
app1.window.rootViewController=nav;
}
@@ -24,10 +24,10 @@ static char overlayKey;
- (void)cnSetBackgroundColor:(UIColor *)backgroundColor
{
if (!self.overlay) {
[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self setClearNav];
self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, CGRectGetHeight(self.bounds) + 20)];
if (@available(iOS 11.0, *)) {
self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -44, [UIScreen mainScreen].bounds.size.width, CGRectGetHeight(self.bounds) + 44)];
self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -64, [UIScreen mainScreen].bounds.size.width, CGRectGetHeight(self.bounds) + 64)];
} else {
self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, CGRectGetHeight(self.bounds) + 20)];
}
@@ -42,17 +42,30 @@ static char overlayKey;
- (void)cnReset
{
[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self setClearNav];
[self.overlay removeFromSuperview];
self.overlay = nil;
}
-(void)setClearNav
{
[self setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
//设置那条横线直接隐藏
self.shadowImage = [[UIImage alloc] init];
NSDictionary *dic = @{NSForegroundColorAttributeName : [UIColor whiteColor],
NSFontAttributeName : [UIFont systemFontOfSize:19]};
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *barApp = [UINavigationBarAppearance new];
barApp.backgroundColor = [UIColor clearColor];
barApp.titleTextAttributes = dic;
barApp.backgroundEffect = nil;
barApp.shadowColor = nil;
self.scrollEdgeAppearance = nil;
self.standardAppearance = barApp;
}else{
self.titleTextAttributes = dic;
[self setShadowImage:[UIImage new]];
[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
}
//透明
self.translucent = YES;
if (self.overlay) {
[self.overlay removeFromSuperview];
self.overlay = nil;
@@ -62,17 +75,178 @@ static char overlayKey;
-(void)resetBackgroundImage{
[self setBackgroundImage:[UIImage imageNamed:@"blackbar.png"] forBarMetrics:UIBarMetricsDefault];
[self setNavbgImage:[UIImage imageNamed:@"blackbar.png"]];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
-(void)setWhiteNav
{
[self setBackgroundImage:[UIImage imageNamed:@"blackbar_white.png"] forBarMetrics:UIBarMetricsDefault];
[self setNavbgImage:[UIImage imageNamed:@"blackbar_white.png"]];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
#pragma mark - 私有
+ (UIColor *)colorWithHexString:(NSString *)stringToConvert
{
if ([stringToConvert hasPrefix:@"#"])
{
stringToConvert = [stringToConvert substringFromIndex:1];
}
float alpha=1.0;
if (stringToConvert.length>6&&![stringToConvert hasPrefix:@"0x"])//含有透明度
{
NSString*alphaString=[stringToConvert substringToIndex:2];
NSScanner *alphaScanner = [NSScanner scannerWithString:alphaString];
unsigned hex;
if (![alphaScanner scanHexInt:&hex])
{
alpha=1.0;
}
else
{
const char *hexChar = [alphaString cStringUsingEncoding:NSUTF8StringEncoding];
int hexNumber;
sscanf(hexChar, "%x", &hexNumber);
alpha=hexNumber/255.0;
}
}
NSScanner *scanner = [NSScanner scannerWithString:stringToConvert];
unsigned hexNum;
if (![scanner scanHexInt:&hexNum])
{
return [UIColor clearColor];
}
return [UIColor \
colorWithRed:((float)((hexNum & 0xFF0000) >> 16))/255.0 \
green:((float)((hexNum & 0xFF00) >> 8))/255.0 \
blue:((float)(hexNum & 0xFF))/255.0 alpha:alpha];
}
+ (UIImage *)createImageWithColor:(UIColor *)color
{
CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
- (void)setNavbgColorStr:(NSString *)colorStr
{
UIImage *image = [self.class createImageWithColor:[self.class colorWithHexString:colorStr]];
[self setNavbgImage:image];
}
- (void)setNavbgColor:(UIColor *)color
{
UIImage *image = [self.class createImageWithColor:color];
[self setNavbgImage:image];
}
- (void)setNavbgImage:(UIImage *)image
{
if (image) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:self];
apperar.backgroundImage = image;
apperar.backgroundImageContentMode=UIViewContentModeScaleAspectFill;
self.standardAppearance = apperar;
self.scrollEdgeAppearance = apperar;
}else{
[self setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
}
}
-(UIImage*)getNaveImage
{
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:self];
return apperar.backgroundImage;
}else{
return [self
backgroundImageForBarMetrics:UIBarMetricsDefault];
}
return nil;
}
- (UINavigationBarAppearance *)getNavgationAppearanceWithNavgationController:(UINavigationBar *)bar
API_AVAILABLE(ios(13.0)){
if (@available(iOS 15.0, *)) {
if (bar.standardAppearance) {
return bar.standardAppearance;
}
if (bar.scrollEdgeAppearance) {
return bar.scrollEdgeAppearance;
}
return [[UINavigationBarAppearance alloc] init];
}
return nil;
}
- (void)setNavTitleColor:(UIColor *)color
{
if (color ) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:self];
apperar.titleTextAttributes = @{NSForegroundColorAttributeName:color};
self.standardAppearance = apperar;
self.scrollEdgeAppearance = apperar;
}else{
self.titleTextAttributes = @{NSForegroundColorAttributeName:color};
}
}
}
- (void)setNavTitleFont:(UIFont *)font
{
if (font ) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:self];
apperar.titleTextAttributes = @{NSFontAttributeName:font};
self.standardAppearance = apperar;
self.scrollEdgeAppearance = apperar;
}else{
self.titleTextAttributes = @{NSFontAttributeName:font};
}
}
}
- (void)setNavTitleTextAttributes:(NSDictionary*)attribute
{
if (attribute) {
if (@available(iOS 15.0, *)) {
UINavigationBarAppearance *apperar = [self getNavgationAppearanceWithNavgationController:self];
apperar.titleTextAttributes = attribute;
self.standardAppearance = apperar;
self.scrollEdgeAppearance = apperar;
}else{
self.titleTextAttributes = attribute;
}
}
}
@end