iOS 11问题..持续更新

开发过程中的一些以前遇到的一些问题和新遇到的iOS11的问题,会持续更新,,后边会附上自己写的一些小工具,希望可以帮助到其他盆友们,顺便求打赏✧(≖ ◡ ≖✿)嘿嘿

0.0.jpg

iOS11

1.nav.title显示数字标题时,显示紊乱

在标题上边只显示的是数字,就不会正常显示,会遮挡.暂时没有太好的解决办法,我的处理方法就很简单:

UILabel *navTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 150, 40)];
navTitleLabel.backgroundColor = [UIColor whiteColor];
navTitleLabel.font = [UIFont fontWithName:@"PingFangTC-Light" size:17];
navTitleLabel.textColor = [UIColor blackColor];
navTitleLabel.textAlignment = NSTextAlignmentCenter;
navTitleLabel.text = self.title;
self.navigationItem.titleView = navTitleLabel;

2.关于inputAccessoryView定制问题

iOS11已经不能定制inputAccessoryView了,我们以前会有这样一种用法:

self.testTF.inputView = self.pickerView//(UIPickerView);
self.testTF.inputAccessoryView = self.toolBar//(UIToolbar);

你会发现在iOS11上已经不能这么用了,会失效,暂时的解决办法只能自定义个view然后放置上UIPickerView再加俩button,抛出代理处理了.


普通问题

1.获取父视图控制器

- (UIViewController *)viewController
{
    for (UIView* next = [self superview]; next; next = next.superview) {
        UIResponder *nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)nextResponder;
        }
    }
    return nil;
} 

2.解决cell顶格

-(void)viewDidLayoutSubviews
{
    if ([self.historySearch respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.historySearch setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
    }
   
    if ([self.historySearch respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.historySearch setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)];
    }
}
#pragma mark - UITableViewDelegate

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }
   
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

3.报错:BuildRoot :6520

[UITableView _dequeueReusableViewOfType:withIdentifier:], /BuildRoot/Library/Caches/com.apple.xbs/So 6520
cell上边添加手势出错

4.报错:BuildRoot :6530

[UITableView _dequeueReusableViewOfType:withIdentifier:], /BuildRoot/Library/Caches/com.apple.xbs/So 6530
在可视化编程中view上多了一个不属于当前控制器的控件

5.iOS10跳转APP store (alivegallery)这个是固定字段

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/cn/app/alivegallery/id******?mt=8"]];

6.修改状态栏颜色

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

方法不起作用:

  • 查看info文件中是否有View controller-based status bar appearance 设置的是NO 有的话把其删除
  • 删除完之后再重写一个自己的nav作为根nav
  • 然后重写nav中的上述方法,方法实现:
- (UIStatusBarStyle)preferredStatusBarStyle
{
    UIViewController* topVC = self.topViewController;
    return [topVC preferredStatusBarStyle];
}

//注意 设置完这个之后整个项目self.automaticallyAdjustsScrollViewInsets会默认为yes,注意布局

7.收回当前控制器成为第一响应者的view

- (void)viewResignFirstResponse:(UIView *)view {
    for (UIView *subview in view.subviews) {
        if ([subview isFirstResponder]) {
            [subview resignFirstResponder];
            return;
        }
        [self viewResignFirstResponse:subview];
    }

8.遇到引用库重复定义的问题.

  • 拉出.a文件,查看.a文件支持的框架(arm64/armv7/i386/x86_64)
    lipo -info ***.a
  • 分解出各个单独框架的.a文件(分解成not fat file 文件方便以后分离.o文件)
    lipo ***.a -thin armv7 -output ***_armv7.a (armv7例子)
  • 分解出各个.a文件的.o文件(最好单独创建一个文件夹)
    ar vx ***_armv7.a
  • 根据报错信息,删除各个单独.a文件中冲突的.o文件(举例)
    rm ********.o
  • 合并各个删除.o文件之后的单独框架 生成新的.a文件
    ````ar rcs ***_final_armv7.a *.o```
  • 其他单独框架重复以上操作生成各种新的.a文件
  • 生成新的.a文件
    lipo -create ***armv7.a ***arm64.a ***i386.a ***x_86_64.a -output ***new.a
  • 覆盖原工程中.a文件

9.解决在标签控制器上添加图片被系统背景覆盖问题

cinema.tabBarItem.image = [[UIImage imageNamed:@"cinema"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

后边附上我近些时候写的一个帮助类项目,算是一个在开发过程中使用到的小工具总结,有一些也是自己写的一个分类/扩展,希望对你们有帮助


项目目录:

分类&扩展

  • ViewControl
//回收当前键盘
- (void)viewResignFirstResponse:(UIView *)view;
  • View

获取各种坐标和frame的封装(引用自网络)

  • String
//获取字符串高度/宽度
- (CGFloat)boundingHeightWithWidth:(CGFloat)width withFont:(CGFloat)font;
- (CGFloat)boundingWidthWithHeight:(CGFloat)height withFont:(CGFloat)font;
//对象转json字符串
+ (NSString*)DataTOjsonString:(id)object;
//emoji表情封装(引用于网络)
NSString+Emoji
//数字和字母的集合
+ (Boolean)isNumberCharaterString:(NSString *)str;
//字母的集合
+ (Boolean)isCharaterString:(NSString *)str;
//数字组合
+ (Boolean)isNumberString:(NSString *)str;
//是否含有非法字符
+ (Boolean)hasillegalString:(NSString *)str;
//数字组合 +
+ (Boolean)isValidSmsString:(NSString *)str;
//邮箱
+ (BOOL) validateEmail:(NSString *)email;
//手机号码验证
+ (BOOL) validateMobile:(NSString *)mobile;
//车牌号验证
+ (BOOL) validateCarNo:(NSString *)carNo;
//车型
+ (BOOL) validateCarType:(NSString *)CarType;
//用户名
+ (BOOL) validateUserName:(NSString *)name;
//密码
+ (BOOL) validatePassword:(NSString *)passWord;
//昵称
+ (BOOL) validateNickname:(NSString *)nickname;
//身份证号
+ (BOOL) validateIdentityCard: (NSString *)identityCard;
//Urlencode转码
+ (NSString *)encodeToPercentEscapeString: (NSString *) input;
+ (NSString *)decodeString:(NSString*)encodedString;
  • Color
/* 从十六进制字符串获取颜色 */
+ (UIColor *)colorWithHexString:(NSString *)color;

/* 从十六进制字符串获取颜色 */
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;

/* 颜色转图片 */
+ (UIImage *)createImageWithColor:(UIColor *)color;
  • Date
//根据N年N月N日N时N分N秒生成日期 起始日期:0000-00-00 00:00:00 +0000
+ (NSDate *)dateWithYear:(NSInteger)year
                   month:(NSInteger)month
                     day:(NSInteger)day
                    hour:(NSInteger)hour
                  minute:(NSInteger)minute
                  second:(NSInteger)second;
//计算连个date之间差天数
+ (NSInteger)daysOffsetBetweenStartDate:(NSDate *)startDate endDate:(NSDate *)endDate;
//距今天之前N小时N分钟的日期
+ (NSDate *)dateWithHour:(int)hour
                  minute:(int)minute;

#pragma mark - Getter
- (NSInteger)year;//到今天有多少年
- (NSInteger)month;//到今天有多少月
- (NSInteger)day;//到今天有多少日
- (NSInteger)hour;//到今天有多少小时
- (NSInteger)minute;//到今天有多少分钟
- (NSInteger)second;//到今天有多少秒
- (NSString *)weekday;//今天是周几


#pragma mark - Time string
- (NSString *)timeHourMinute;//获取现在时间(14:05)
- (NSString *)timeHourMinuteWithPrefix;//获取现在时间(下午14:05)
- (NSString *)timeHourMinuteWithSuffix;//获取现在时间(pm14:05)
- (NSString *)timeHourMinuteWithPrefix:(BOOL)enablePrefix suffix:(BOOL)enableSuffix;

#pragma mark - Date String
- (NSString *)stringTime;//(14:05)
- (NSString *)stringMonthDay;//(08.25)
- (NSString *)stringYearMonthDay;//(2017-08-25)
- (NSString *)stringYearMonthDayHourMinuteSecond;//2017-08-25 14:05:30
+ (NSString *)stringYearMonthDayWithDate:(NSDate *)date;      //date为空时返回的是当前年月日 获取时间对象的年月日
+ (NSString *)stringLoacalDate;//获取当地时间

#pragma mark - Date formate
+ (NSString *)dateFormatString;//yyyy-MM-dd
+ (NSString *)timeFormatString;//HH:mm:ss
+ (NSString *)timestampFormatString;//yyyy-MM-dd HH:mm:ss
+ (NSString *)timestampFormatStringSubSeconds;//yyyy-MM-dd HH:mm

#pragma mark - Date adjust
- (NSDate *) dateByAddingDays: (NSInteger) dDays;//从调用日期几天之后的时间
- (NSDate *) dateBySubtractingDays: (NSInteger) dDays;//从调用日期几天之前的时间

#pragma mark - Relative dates from the date
+ (NSDate *) dateTomorrow;//明天日期
+ (NSDate *) dateYesterday;//昨天日期
+ (NSDate *) dateWithDaysFromNow: (NSInteger) days;//从今天起几天之后时间
+ (NSDate *) dateWithDaysBeforeNow: (NSInteger) days;//从今天起几天之前时间
+ (NSDate *) dateWithHoursFromNow: (NSInteger) dHours;//从今天起几小时之后时间
+ (NSDate *) dateWithHoursBeforeNow: (NSInteger) dHours;//从今天起几小时之前时间
+ (NSDate *) dateWithMinutesFromNow: (NSInteger) dMinutes;//从今天起几分钟之后时间
+ (NSDate *) dateWithMinutesBeforeNow: (NSInteger) dMinutes;//从今天起几分钟之前时间
+ (NSDate *) dateStandardFormatTimeZeroWithDate: (NSDate *) aDate;  //标准格式的零点日期
- (NSInteger) daysBetweenCurrentDateAndDate;                     //负数为过去,正数为未来

#pragma mark - Date compare
- (BOOL)isEqualToDateIgnoringTime: (NSDate *) aDate;//两个日期是否相等
- (NSString *)stringYearMonthDayCompareToday;//返回“今天”,“明天”,“昨天”,或年月日
+ (NSString *)intervalTimeFromDate:(NSDate *)date1 toDate:(NSDate *)date2;//返回 几秒前,几分前,几小时前,几天前,几月前,几年前
+ (NSString  *)displayDataStyleWithNumber:(NSString *)timeNumber;//通过时间戳 获取"刚刚""几分钟前""几小时前" "昨天 00:00:00" 本周内"周几" 超出本周"正常时间"
+ (NSString *)getTimeString:(NSInteger)duration; //通过时长获取时分秒的字符串  倒计时用
#pragma mark - Date and string convert
+ (NSDate *)dateFromString:(NSString *)string;//字符串转Date
+ (NSDate *)dateFromString:(NSString *)string withFormat:(NSString *)format;//根据格式把字符串转成Date
- (NSString *)string;//日期转字符串
- (NSString *)stringCutSeconds;//转成字符串 砍掉秒  2017-08-25 14:05

还有一些帮助类:比如base64,MD5加密,des3加密,自己写的一个金额输入框例:"0.01",包括自主判断和自定义键盘.一个无数据tabview(继承)等等...

附上github链接,欢迎使用


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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,139评论 30 470
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,008评论 25 707
  • 躺在床上睡不着。 本来打算八点睡得,结果一直到凌晨还是睡不着。 手机那头,没有回复的消息。 米决定再把那个人发的语...
    西瓜米阅读 181评论 0 0
  • 浦沿学前教育集团联庄分园围棋俱乐部开班啦!围棋俱乐部由中大班的24名幼儿组成。幼儿园聘请了经验丰富的专业围...
    加加加佳阅读 188评论 0 0
  • 乌鲁木齐与我们青岛有两个小时的时差,晚上9点多钟,天才刚刚黑。上班一族正在回家的路上,大街上车水马龙,热闹非凡。...
    青润阅读 556评论 1 3