好用的命令 有更新!

列出Mac中所有有效的证书 security find-identity -v -p codesigning 列出Mac中的所有provisioning profile fastlane sigh manage 删除provisioning profile fastlane sigh manage -p name 拷贝内容到剪切板 cat a.txt | pbcopy

阅读全文 »

iOS学习笔记 有更新!

autoLayout Autolayout 的作用非常明确:帮我们确定在不同设备、不同(父 view)环境下,同一个可视单元所应具有合适的位置和尺寸,因此,当一个 UIView 上所施加的约束能够唯一确定它的 frame(x, y, width, height)的时候我们的自动布局的使用才是正确的。而新手通常犯的两类错误就是约束不足(约束太少)和约束冲突两种(约束太多)。如果你给出的约束只能够确定这个 view 的大小,或者位置或者位置中的某一个项(比如 x)的时候,就会出现约束不足的情况,在 xib 或者 storyboard 中,会以黄色的警告出现在左侧提示框内;如果你给出的约束推导出了两个甚至多个互相矛盾的位置尺寸结果的时候,就产生了布局错误,在编译的时候直接就 build 不过。 画布中角度是顺时针转的 贝泽尔曲线添加圆弧 clocwise 参数就是常规理解顺时针,core graphics 添加圆弧时此参数正好相反 更新:关于角度的旋转方向,其实是按逆时针转动的,但是因为在一些坐标系里对 Y 轴进行了变换(乘以-1)导致成了顺时针转动,这也解释了上边引用里的说明 [参考](https://de....

阅读全文 »

Swift小知识 有更新!

title: Swift 小知识 date: 2019-02-27 10:42:55 tags: - Swift categories: - iOS class 修饰的 func 可以被重写,static 不可以 protocol 中要求实现的方法必须保证访问控制修饰符也要正确,尤其是对于可选实现的方法,如果修饰符不对就会被当做没有实现 如果调用 Error 的 localizedDescription 方法跟你重写的内容不一样,那你八成是没有让你的 Error 实现 LocalizedError 协议

阅读全文 »

Swift中CGAffineTransform那点事儿

title:Swift中CGAffineTransform的那点事儿 tags: - Swift - CGAffineTransform categories: - iOS 关于CGAffineTransform的介绍可以说一搜一大把,它的主要作用就是能对UIView进行变换,例如缩放、旋转、移动,这里推荐官方介绍。今天我在这里就不赘言了,主要强调几点: 补习矩阵计算的知识 矩阵乘法规则 A*B=C 横着称为行,竖着称为列 A的行数等于B的列数时A和B可以相乘 C的行数等于A的行数,C的列数等于B的列数 A的第一行的数分别乘以B的第一列的相同位置的数最后得到的和就是C的第一行第一列的数(文艺说法:乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和) 混合变换 在平时的开发中我们常常会遇到需要对View进行多次变换的场景,例如:把长宽(100,100)都为父视图长宽(200,200)一半的视图变换的跟父视图一样大小并移到父视图的中心 问:要想实现需要上边的变换需要几步? 答:两步。第一步,将长宽都放大到原来的2倍;第二步,将视图移动到父视图的中....

阅读全文 »

“私密相册-就不让你看”用户隐私声明

“私密相册-就不让你看”客户端是一款工具类App,以下简称本应用。 本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。 1 . 适用范围 (a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息; (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据; (c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。 您了解并同意,以下信息不适用本隐私权政策: (a) 您在使用本应用平台提供的搜索服务时输入的关键字信息; (b) 本应用收集到的您在....

阅读全文 »

Flutter学习笔记(持续更新)

InkWell (中文俗称 水波纹、油墨等) 如果在调试时发现没有效果,首先确认有没有给onTap赋值,而且必须不能是匿名空函数()=>{},必须有实现,其次再包裹Material调试

阅读全文 »

SSH免密登录

说明 Client -> 你当前使用的设备,例如我正在敲代码的MacBookPro Server -> 你要免密登录的服务器 在Client上生成秘钥 打开终端输入命令cd ~/.ssh 继续输入ssh-keygen -t rsa,然后一路回车 执行命令cat id_rsa.pub>>authorized_keys 修改文件authorized_keys的权限,执行命令chmod 600 authorized_keys 修改目录*~/.ssh*的权限,执行命令chmod 700 ~/.ssh 复制公钥文本,输入cat authorized_keys,然后复制出现的文本。形如以下 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsopScfdy/3dfxLXErZVX5ZHn83mA8a/YZyo29FbEoOf3ayPSbK1jUZRbC1bEV86g3PcdwNqZOakaaAQpqT74aKx3+1AfsrxLD1mar6NnUd6Rlup7FrTe7lD4MNj5brK+PJtzFpV2gzszCeS34ZvfnlNv....

阅读全文 »

IBInspectable无法取值的问题

我在xib文件里用了IBInspectable然后在UIView的layoutSubviews里执行 dispatch_async(dispatch_get_main_queue(), ^{ //some code} 竟然取不到相应IBInspectable标记的值,如果在block的外边重新声明新的变量并赋值才可以 如图: 奇怪的问题,特此记录

阅读全文 »

WCSession-sendMessage-失败处理

通过手表向手机端发送消息时出现Payload could not be delivered(中文环境下:未能传送负载)的错误提示,如果你保证你的设置都对的情况下,请记得检查手机端WCSession实现的代理方法全不全 如果你是这样发送消息 session.sendMessage(["request" : "list"], replyHandler: nil, errorHandler: { (error) in print(error)}) 那么在手机端你要有这样的代理方法 public func session(_ session: WCSession, didReceiveMessage message: [String : Any]) 如果你是这样发送消息 session.sendMessage(["request" : "list"], replyHandler: { (result) in print(result) }, errorHandler: { (error) in print(error) }) 那么在手机端你要有这样的代理方法 public func se....

阅读全文 »

VS保存时自动格式化导致ejs编译错误

ejs模板引擎不知道大家有没有好的格式化插件,有的话,求一个 最近遇到一个ejs解析的问题,非常小心的写好ejs文件,一运行出了错,如下 Invalid or unexpected token in /Users/wang/Desktop/Work/Node/nobook/views/web-index.ejs while compiling ejs If the above error is not helpful, you may want to try EJS-Lint: https://github.com/RyanZim/EJS-Lint SyntaxError: Invalid or unexpected token in /Users/wang/Desktop/Work/Node/nobook/views/web-index.ejs while compiling ejs If the above error is not helpful, you may want to try EJS-Lint: https://github.com/RyanZim/EJS-Lint ....

阅读全文 »

UIImagePickerController不走回调的问题

今天又遇到了一个奇怪的问题 代码如下: UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.allowsEditing = YES; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.delegate = self; [self presentViewController:imagePicker animated:YES completion:nil]; 用法很对,没毛病,可就是不调用 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info 分析原因 UIImagePickerController实例对象被释放了 //这不可能....

阅读全文 »

CoreData里UUID的奇怪问题

0x1 今天我在开发AppleWatch应用时发现了一个关于CoreData的极其古怪的问题,特此记录下来 0x2 因为CoreData是支持UUID类型的属性的,所以我在设计某个Model时就用了UUID的属性,但是因为不是连续开发导致我后来把这个属性的类型忘了,以为是String. 于是我在手机端的代码里写了类似这样的代码 let uuid: String = "7BD09D86-8941-4E50-9A42-7240E970FEE7" let predicate = NSPredicate(format: "uuid = %@", argumentArray: [uuid]) //省略CoreData根据predicate获取数据的代码 注意Model里uuid的属性类型是UUID,我在这里直接用的是String 然后,我...很成功的获取到了预期的数据. 当然,我当时并没有意识到类型不匹配. 于是乎,我把相同的代码放到了 //MARK: -WCSession的代理方法 Watch向iPhone发送的消息在这里接收 func session(_ session: WCSessi....

阅读全文 »