iOS14获取idfa
1,添加系统库:AppTrackingTransparency.framework
2,Xcode工程中Info.plist权限配置:
1 | Privacy - Tracking Usage Description : 需要你允许使用广告标识符,以便追踪广告信息和推送. |
3,头文件和代码
1 | #if defined(__IPHONE_14_0) |
iOS14以下的系统直接即可获取到idfa,不需要权限控制.
Xcode自动配置证书出现”XXXX has conflicting provisioning settings”
手动导入证书和自动管理的证书导致的冲突
“XXXX is automatically signed,but provisioning profile 45551591-2d82-4cc3-a2b7-99838c6700b3 has been manually specified. Set the provisioning profile value to “Automatic” in the build settings editor,or switch to manual signing in the project editor.”
解决方法:打开project.pbxproj文件,查找45551591-2d82-4cc3-a2b7-99838c6700b3并删除即可
Mac电脑显示隐藏文件
(commond + shift + . ) 按一次则是显示,再按一次则是隐藏
Xcode12后出现静态库 linked library ‘libPods-xxx.a‘ is missing one or more architectures required by this target: armv7
能正常真机测试,但build的时候会失败(红色警告)
升级xcode12后,项目在run debug时候是正常运行的,但是在build或者run release的时候就会出现如标题的红色错误。
在Target-Build Settings-Excluded Architectures中添加以下代码
1 | EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64=arm64 arm64e armv7 armv7s armv6 armv8 EXCLUDED_ARCHS=$(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)) |
真机测试包Payload
出一个支持真机安装的xxx.ipa包
1,在xcode工程中,安装支持准备安装设备的证书和描述文件;
2,xcode中选择真机,Build工程,在Products文件中找到后缀为xxx.app文件
3,show in finder,copy一下xxx.app格式的文件;
4,在桌面创建名为Payload的文件夹,把xxx.app复制进去;
5,压缩Payload文件夹为Payload.zip
6,把Payload.zip修改为Payload.ipa,这个时候就是可以进行安装的ipa包了.
最后,可以使用xcode工具或者iTools进行安装ipa包;
书写block时
判断block为非空时,再进行赋值;
1 | if (self.block) { |
Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.
方法:
1,重启手机
2,还不行的话,在手机设置中 Developer-》clear Trusted computers,重新设置信任电脑试试
Github
1 | GitHub Desktop 使用 |
-[NSBundle initWithURL:]: nil URL argument’
某个资源包.bundle没有导入到工程中
向工程中添加第三方字体
1,把字体添加到Xcode中形如:A-OTF-FOLKPRO-MEDIUM.OTF 的文件
2,在Info.plist配置:
1 | //一个数组,Fonts provided by application |
SF Symbols中的图标
iOS13以后可以使用:UIImage *image = [UIImage systemImageNamed:@”mic”];
默认图标颜色是蓝色,修改颜色
1 |
|
xcode导出设备crash日志
1 | //设备能在xcode上安装app,才能正确导出日志 |
跳转App store 对应的app
1 | //形如 |
关于读取bundle资源中的图片
1 | //bundle资源中保存不同的@2x,@3x等,使用如下方法会自动读取是使用2x还是3x |
获取当前加载图片的像素px
1 | CGFloat w = CGImageGetWidth(i2.CGImage); |
设置导航栏颜色和title字体
1 | //AppDelegate.m中 |
iOS13处理通知token值
1 | //获取DeviceToken成功 |
字符串和数组,字典之间的相互转换
NSData作为中间键
1 | //字典或者数组转字符串 |
比较稳定判断iPhoneX全面屏系列
1 | /// 是否是iPhoneX全面屏系列 |
设置CGSize常量值
1 | .h |
pod用法示例
cd 工程目录
vim Podfile
按esc退出编辑
:wq 保存
pod install
1 | source 'https://github.com/CocoaPods/Specs.git'#turk |
卡在pod install xxx
使用: pod install –verbose –no-repo-update 命令
truk报错
终端执行命令:pod repo remove trunk
UITableView部分设置
1 | //去掉cell之间的下划线 |
String
URL包含中文时候必要的转码
1 | //编码 |
横竖屏判断
1 | UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation]; |
Find(Regular Expression)查找xcode中所有中文:
1 | @"[^"]*[\u4E00-\u9FA5]+[^"\n]*?" |
前往xcode证书路径
~/Library/MobileDevice/Provisioning Profiles
UIButton文字靠左
1 | forgetBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; |
UITextFiled 左边留出空隙
1 | UIView * viewLeft1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 5, 5)]; |
设置父视图透明度,不改变子视图透明度
1 | 在父视图上设置: |
UITextFiled 首字母不大写
1 | [filed setAutocapitalizationType:UITextAutocapitalizationTypeNone]; |
重签名教程地址
设置WKWebView 背景色
1 | [self.myWebView setOpaque:NO]; |
代码块声明 <#state#>
iPhone X 相关1
顶部:44(导航栏)-44(状态栏+圆弧部分);
底部:49(导航栏)-34(圆弧部分);
iOS13 vc present方式改回之前
naVC.modalPresentationStyle = UIModalPresentationFullScreen;
naVC被推出来的vc
默认选中某个cell
1 | //默认选中某个cell |
判断是否是iphoneX(刘海),不算精准.
1 | UIKIT_STATIC_INLINE BOOL FDIS_IPHONEX(){ |
UINavigationController 导航栏下坐标从(0,0)开始
1 | //iOS7之后默认全屏布局,也就说(0,0)是从左上角开始的,有导航栏的时候,可以在VC中设置如下 |
自定义返回按钮
1 | self.leftBackButton = [UIButton buttonWithType:UIButtonTypeCustom]; |
关闭暗黑模式的适配
全局关闭暗黑模式:
在Info.plist文件中,添加key为User Interface Style,类型为String,value设置为Light即可.
1 | //source code 模式下是 |
单页面关闭暗黑模式:
单个页面或视图关闭暗黑模式,设置 overrideUserInterfaceStyle 为对应的模式,强制限制该视图与其子视图以设置的模式进行展示,不跟随系统模式改变进行改变.
1 | self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; |
设置此属性会影响当前view/viewController/window 以及它下面的任何内容。
iOS13创建工程:SceneDelegagte
iOS13 创建工程多了类:SceneDelegate(iPadOS多窗口支持)
判断机型:iPad,iPhone…
1 | //判断是iPad:UIUserInterfaceIdiom(枚举类型) |
xcode 代码修改不生效
respondsToSelector 返回一个布尔值,判断某个对象是否响应某个方法,防止异常.
—-分割线—
hexo常用命令
hexo n
hexo g 提交
hexo s 静态预览
hexo d 发布
判断苹果当前手机机型(如:iPhone7)
1 | //代码 |
SF smybols下载路径
简单说明:SF是苹果iOS13之后本身自带的图片
1 | //实例,通过SF找到对应的图片名字即可 |
GO下载主页
crash:[NSNull length]:unrecognized selector sent to instance
json数据中存在字符串,name = @”
使用:isKindOfClass:[NSNull class]]来进行判断
提问:同步+主队列是否一定会造成死锁?
答案:不一定
1 | //1,在主线程中执行该段代码会造成死锁 |