1、iOS 真机测试错误“The application bundle does not contain a valid identifier”
- 解决1:尝试一下 command + alt + shift + k 然后重新run一下代码。
- 解决2:在 Xcode > Preferences > Locations > Derived Data 找到 DerivedData 的路径,删除 DerivedData 下的所有文件。
2、UIScrollView中嵌套UITableview, 然后IQKeyboardManagerSwift 对cell中的输入框UITextfield失效
- 解决:
tableView.isScrollEnabled = false
将tableView的滑动关闭
3、上线警告 WARNING ITMS-90076: "Potential Loss of Keychain Access"
这是由于把 app从一个账号转移到另一个账号上去了,然后又提版本,出现如下警告,可以不用管它,下一步就行。
4、上传IPA包到 iTunes Connect 后,收到警告:
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of new apps that use UIWebView APIs starting from April 2020. See https://developer.apple.com/documentation/uikit/uiwebview for more information.
原因:项目中用到了 WebViewJavascriptBridge 里面有UIWebView 的代码。代码两年多没更新了,故拖到本地并删除WebViewJavascriptBridge 类文件。并做了个人pod库ZSWKWebViewVC 如果以后有更新,自己再手动更新。
5、做推送的时候注册通知,收到如下注册通知失败的消息:
code=3000 NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串
原因:
code=3000是由于iPhone上的配置文件的app identity是带通配符的,而推送不能用带通配符的。
解决:
1.去Provisioning里面生成新的Profile,配置的app id是不带通配符的,与项目的bundleID 一样。
2.删除Xcode里面原来的push profile(如果没有就不用删除)再次双击新下载的profile(mobileprovision文件)
3.在项目的target里面选择新的profile然后编译
6、iOS去掉导航栏navigationBar
下的横线
//去除导航栏下方的横线
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor appNavigationBarColor]]
forBarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
iOS 隐藏/去掉 导航栏返回按钮中的文字
最近iOS项目中要求导航栏的返回按钮只保留那个箭头,去掉后边的文字,在网上查了一些资料,最简单且没有副作用的方法就是
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)
forBarMetrics:UIBarMetricsDefault];
7、集成支付宝SDK时的错误
问题:app集成支付宝报错:"openssl/asn1.h file not found"
解决办法:在自己工程文件夹里建一个文件夹,随便起什么名字。把支付宝所需要的东西都拷贝进去,然后add files,然后找到TARGETS-Build Settings,在里面找到如下位置
![](https://img.haomeiwen.com/i838624/6743feb7e8ade496.png)
8、自定义UISearchBar(修改placeHolder文字颜色,修改_searchField文字颜色,修改放大镜图片等)
iOS 13新系统有变化,待更新
![](https://img.haomeiwen.com/i838624/4adb3a59eb0473af.jpg)
//修改背景图片,隐藏边框
[_searchBar setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]]];
_searchBar.placeholder = @"新房、二手房、租房";
//获取searchBar里面的TextField
UITextField *searchField = [_searchBar valueForKey:@"_searchField"];
//更改searchBar 中PlaceHolder 字体颜色
[searchField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
//更改searchBar输入文字颜色
searchField.textColor= [UIColor whiteColor];
//设置搜索框中TextField的背景图
[_searchBar setSearchFieldBackgroundImage:[UIImage imageWithColor:[UIColor colorWithWhite:1 alpha:0.2] size:CGSizeMake(200, 30) andRoundSize:15] forState:UIControlStateNormal];
//方法1、修改放大镜图片
[self.searchBar setImage:[UIImage imageNamed:@"search"]
forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
//方法2、修改放大镜
UIImage *image = [UIImage imageNamed:@"search"];
UIImageView *iconView = [[UIImageView alloc] initWithImage:image];
iconView.frame = CGRectMake(0, 0, image.size.width , image.size.height);
searchField.leftView = iconView;
let searchBar = UISearchBar()
searchContentView.addSubview(searchBar)
searchBar.snp.makeConstraints { (make) in
make.leading.equalToSuperview().offset(10)
make.trailing.equalToSuperview().offset(-10)
make.bottom.equalToSuperview().offset(-10)
make.height.equalTo(36)
}
searchBar.placeholder = "输入运单信息搜索"
searchBar.backgroundImage = UIImage()
searchBar.backgroundColor = UIColor.white
if #available(iOS 13.0, *) {
searchBar.searchTextField.tintColor = UIColor.appMainColor
searchBar.searchTextField.backgroundColor = UIColor.init(hex: "efefef")
searchBar.searchTextField.font = UIFont.systemFont(ofSize: 17, weight: .light)
} else {
if let views = searchBar.subviews.last?.subviews,
let kind = NSClassFromString("UISearchBarTextField") {
for v in views {
if v.isKind(of: kind) {
let tf = v as! UITextField
tf.tintColor = UIColor.appMainColor
tf.backgroundColor = UIColor.init(hex: "efefef")
tf.font = UIFont.systemFont(ofSize: 17, weight: .light)
}
}
}
}
searchBar.delegate = self
9、Command CompileSwift failed with a nonzero exit code
Xcode 11.3, Swift 4.2新建项目出现这个问题.
新建项目直接复制上个项目的podfile文件内容,然后pod install ,之后编译出现这个问题.
搞了好久无法解决,最后重新建一个项目,然后pod里面只放一个库,编译成功后,再把剩下的全部放进去,OK.
或者删除 Pods文件夹、xxx.xcworkspace文件、Podfile.lock文件、Podfile文件只留一个库,重新安装下。我这里编译成功了,然后把剩下的库打开,安装成功!
10、有时候项目中需要计算行数和指定元素的列数,计算如下
计算行数:
x = 总个数
y = 一行的个数
行数 = ((x - 1) / y) + 1
计算指定元素的列数:
用上面的公式计算出指定元素所在的行数
y = 一行的个数
列数 = 元素序号 - (行数 * y)
11、 Unknown class in Interface Builder file 解决方案
在用swift项目中xib导入自定义View后,运行时报错: [Storyboard] Unknown class in Interface Builder file.
最终解决如下:
检查storyboard或xib中的控制器,使module匹配即可。
因为我把自定义view在原项目封装出来了,所以这里造成找不到class。
![](https://img.haomeiwen.com/i838624/4e14c6cc614b86ab.png)
12、设置xib 或者 VC中设置 UITableView/UIScrollView 起始位置在状态栏下方开始
// tableView
if #available(iOS 11.0, *) {
scrollView.contentInsetAdjustmentBehavior = .never;
} else {
self.automaticallyAdjustsScrollViewInsets = false;
}
// scrollView
if #available(iOS 11.0, *) {
scrollView.contentInsetAdjustmentBehavior = .never;
} else {
self.automaticallyAdjustsScrollViewInsets = false;
}
// xib中的scrollView重新社会约束,因为一般设置的是safeArea
scrollView.snp.remakeConstraints { (make) in
make.leading.trailing.top.equalToSuperview()
if #available(iOS 11.0, *) {
make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
} else {
make.bottom.equalTo(bottomLayoutGuide.snp.bottom)
}
}
网友评论