
Swift
文章平均质量分 53
Understand_XZ
热爱生活,热爱代码。
展开
-
XZ_iOS 之 M1 M2 M3的M系列芯片的Mac苹果电脑安装cocoapods
M系列芯片的Mac苹果电脑安装cocoapods 安装的顺序如下:Homebrew->rvm->ruby->cocoapods。原创 2023-12-19 11:57:05 · 2612 阅读 · 0 评论 -
XZ_Swift 在Swift中以字符串形式获取对象的类名
作为变量(work with both value type or reference type)的扩展。是大多数Objective-C类层次结构的根类,所以可以尝试对。或者可以创建一个静态函数,其参数类型为。原创 2023-05-09 13:46:13 · 781 阅读 · 0 评论 -
XZ_Swift 之修改 UIPickerView 的文字大小
直接使用代理方法attributedTitleForRow即可实现,不需要使用func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView 方法// MARK: - UIPickerViewDelegate func pickerView(_ pickerView: UIPickerView, .原创 2021-11-02 16:55:33 · 2062 阅读 · 0 评论 -
XZ_iOS iOS13浅色模式/暗黑模式导航栏颜色不自动适配
浅色模式/暗黑模式导航栏不自动适配进行暗黑模式适配的时候,发现来回切换暗黑模式和浅色模式时,导航栏和tabBar不随着设置改变。查找许久,发现切换暗黑模式和浅色模式有个监听方法,如下:override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { tabBar.backgroundImage = UIImage.imageFrom(color: Asset.Color原创 2021-03-31 15:50:19 · 1079 阅读 · 0 评论 -
XZ_iOS 之 代码创建的collectionView,在storyboard中调用出现的布局问题
代码创建的collectionView,在storyboard中调用,item的大小不正确的问题解决:设置的是平分屏幕的宽度,结果显示出来的是下图,打印出来的宽度计算的没问题,只是显示出来的宽度不对,正确的显示如下图:实际显示出来的是下图:方法一:extension XZButtonCollectionView: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UIColl原创 2021-01-11 10:37:37 · 400 阅读 · 1 评论 -
XZ_iOS之 CGFloat 数值计算之后,精度丢失的问题解决
extension String {/// 解决精度丢失问题 func dealPrecisionLoss() -> String { let doubleValue = Double(self) ?? 0 let doubleString = String(format: "%lf", doubleValue) let decNumber = NSDecimalNumber(string: doubleString) let.原创 2021-01-11 10:30:02 · 1124 阅读 · 0 评论 -
XZ_Swift 之输入框的各种限制,看这一篇就够了:输入框只能输入字母、数字和中文,控制输入特殊字符和表情
目录1、输入框只能输入数字、字母和中文,不能输入特殊字符、表情和不包括空格;2、控制输入的字符数量,例如只能输入11个字符3、仅控制不能输入表情4、金额的输入框限制只能输入一位小数点,小数点后保留2位小数,控制最多输入12位数字1、输入框只能输入数字、字母和中文,不能输入特殊字符、表情和不包括空格;思路:在输入的过程中,判断当前输入的文字是不是数字、字母和中文,因为特殊字符的范围很大,所以只控制输入的是满足条件的即可。代码:在String的extension中添加下面方法.原创 2020-10-15 21:13:52 · 1277 阅读 · 0 评论 -
XZ_iOS 动态添加viewController到tabBarController中
1、根据数据请求返回的数据,控制tabBar的item动态显示与隐藏:HomeViewController.swiftprivate func getShowHiddenCeShi1() { let urlString = PostPath.isDisplayTest.path XZNetworkManager().requestWith(URLString: urlString, parameters: nil, headers: nil) {原创 2020-05-29 12:01:47 · 1007 阅读 · 0 评论 -
XZ_iOS 之 WKWebView字体font相比UIWebView更小
我将UIWebView更改为WKWebView,使用相同的html,WKWebView中的字体看起来比UIWebView中的字体小。有什么办法可以避免这种更改?我是通过添加一个html字符串解决了这个问题:对于Objective-C:NSString *headerString = @"<header><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale..原创 2020-05-12 20:54:22 · 447 阅读 · 0 评论 -
XZ_iOS 之给CollectionView添加headerView
使用 ContentInset 属性给collectionView添加类似于tableView的HeaderView,设置代码如下:self.collectionView.contentInset = UIEdgeInsetsMake(150, 0, 0, 0);仅仅只是添加这句代码,可以实现内容下移,但是,添加的mj_header也随之偏移,效果图如下:MJRefresh...原创 2019-12-31 16:33:17 · 621 阅读 · 0 评论 -
XZ_iOS 获取App Store版本号和APP版本号并进行比较大小
1、从App Store获取版本号 func appStoreVersion(appId: String) { let config = URLSessionConfiguration.default let session = URLSession(configuration: config) let url = URL(string: "h...原创 2019-12-14 13:51:31 · 589 阅读 · 0 评论 -
XZ_iOS 之在Swift中引用OC的代码
在开发过程中,我们两个项目的工程一个是使用Swift代码编写的,一个是使用OC代码编写的,现在要实现相同的功能,打算在OC中嵌入Swift代码,下面我以一个新的工程给大家举例一下操作的过程:1、在OC工程中,创建一个Swift文件,这时候会问你是否生成桥接文件,点击是,这时候系统会自动生成Swift的桥接文件,如下图:2、在Build Setting中,将Defines Module...原创 2019-11-04 13:33:21 · 240 阅读 · 0 评论 -
XZ_Swift之使用苹果原生UIRefreshControl实现下拉刷新和上拉加载
实现的效果图 系统的 UIRefreshControl 的属性很少,就只有下面几个: isRefreshing: Bool 判断是否正在刷新 tintColor: UIColor! 修改菊花的颜色,默认是灰色的 attributedTitle: NSAttributedString? 给刷新添加文字显示 beginRefreshing() 开始刷新 endRefreshing() 结原创 2017-12-06 11:46:13 · 2177 阅读 · 0 评论 -
XZ_iOS 之为 Swift 的 Extension 添加 存储属性
我们在分类中添加存储属性时,往往会有一个Extensions must not contain stored properties 的错误提醒,如下图:解决这个问题就是给分类添加关联属性,主要用到的方法是:public func objc_setAssociatedObject(_ object: Any, _ key: UnsafeRawPointer, _ value: Any...原创 2019-04-29 13:50:16 · 3811 阅读 · 0 评论 -
XZ_iOS 之监听屏幕方向
使用系统通知orientationDidChangeNotification 获取屏幕方向,前提是:手机不能设置强制竖屏,如果设置了强制竖屏,是不会调用这个通知的。本文是在用户手机设置了强制竖屏的情况下,将用户竖屏录制的视频,根据屏幕旋转方向,将视频旋转成横屏显示。比如:如下图,拍摄的视频/图片是横着拍的无论是摄像头在左边/右边/上边/下边拍摄的视频或图片,在播放视频或显示图片的时候,...原创 2019-05-05 16:19:36 · 676 阅读 · 0 评论 -
XZ_iOS 之 替换 url中的参数的值
需求如下:用户登录之后,需要刷新web页,这时候需要替换UserId和time的值。URL如下:http://***?time=***&appname=***&value=***&userId=**直接获取链接的query值,修改即可,代码如下:/// 修改 query 中参数的值func changeValue(webUrl: String) -...原创 2019-04-25 11:39:09 · 1201 阅读 · 0 评论 -
XZ_iOS之使用陀螺仪判断屏幕方向
目录Swift版本实现方法方法调用OC版本.h 方法.m方法实现思路: 每隔一段时间监听手机方向,如果发生改变就发送通知。Swift版本import CoreMotion // 导入框架实现方法class XZDeviceOrientation: NSObject { private let sensitive...原创 2019-05-30 17:05:51 · 2284 阅读 · 0 评论 -
XZ_iOS 之 加入购物车bounce效果实现
效果图:动画类XZAddToCartAnimation 的实现:import UIKitimport Foundationlet screenWidth = UIScreen.main.bounds.size.widthlet screenHeight = UIScreen.main.bounds.size.heightclass XZAddToCartAnimati...原创 2019-05-31 16:38:56 · 270 阅读 · 0 评论 -
XZ_iOS 按钮的吸附效果实现
我们需要实现的是左侧的吸附效果,效果图如下:实现代码:let XZScreenWidth = UIScreen.main.bounds.size.widthlet XZScreenHeight = UIScreen.main.bounds.size.height// 是否是iphone Xlet isIphoneX = XZScreenHeight >= 812 ? ...原创 2019-05-31 16:41:50 · 476 阅读 · 0 评论 -
XZ_iOS reloadData 刷新页面导致页面上移的问题解决
仅仅是使用tableView.reloadData()这句代码,导致了下图:在不上滑tableView的情况下,点击全选,没有任何的问题,当滑动tableView的底部时,点击全选,tabelView发生了上移。最初的解决是想着刷新的时候不要动画,直接刷新,还是有问题:不过可以确定的是,确实是动画的原因导致的,最终解决:let reloadSet = Index...原创 2019-06-11 10:40:01 · 1305 阅读 · 0 评论 -
XZ_Swift 之HealthKit 获取手机计步统计
目录1、配置工程2、设置Capabilities3、设置 Info.plist4、错误解决5、代码编写6、demo下载1、配置工程注意:Team这个地方必须是企业的或者是公司的,不能是Personal Team。如下图2、设置Capabilities设置完了之后,左侧会出现 XZHealthDemo.entitlements。如下图:3...原创 2019-04-19 17:33:35 · 1288 阅读 · 0 评论 -
XZ_iOS 之WKWebView H5吊起微信客户端支付并返回APP
我们使用的是WKWebView,在下面方法做的一系列的操作func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) 1、全部代码/// 准备加载 func webView(_ webView: WKWebView, didStartProvision...原创 2019-04-24 13:58:47 · 3032 阅读 · 1 评论 -
XZ_iOS 之tableView点击 和 点击手势冲突的解决
想要实现的效果是:点击空白处,让页面消失这时候,如果实现touchesBegan 方法会发现,这个方法没走,因为点击事件被tableView接收了。override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { print("-------走了touchesBeg...原创 2019-04-17 08:22:01 · 563 阅读 · 0 评论 -
XZ_Swift之YYModel 实现嵌套的字典转模型出现的问题的解决
使用YYModel 实现嵌套的字典转模型时,如果返回数据中,包含数组,就需要实现 modelContainerPropertyGenericClass 方法使用 yymodel字典转模型的时候,出现了3个问题:1、fatal error: NSArray element failed to match the Swift Array Element type2、一直崩溃在 yymodel 的 initWith原创 2018-01-02 17:14:54 · 3651 阅读 · 0 评论 -
XZ_Swift之TextKit类实现把文字变成别的颜色且可交互
TextKit类结构介绍TextKit 是 iOS7推出的,面向对象的文本处理框架;借用一张图来介绍一下:图中真正的引用关系是实线的引用,反方向的虚线是弱引用具体解读1>NSTextStorage 负责存储属性文本;2>NSLayoutManager 用来布局的,负责绘制 3个方法: 绘制字形、绘制背景(比如有些要设置底色的)、布局字形(知道用户点到哪里原创 2018-01-11 16:32:15 · 2874 阅读 · 0 评论 -
XZ_Swift之苹果原生自动布局的使用
自动布局核心公式 “view1.attr1 = view2.attr2 * multiplier + constant” 核心概念:即 任何一个视图 的 属性 都可以 参照 其他视图 的 某一个属性 乘以 乘积 加上一个 常数 relatedBy relation (等于/大于等于/小于等于) constant(在x轴:负数向左,正数向右;在y轴:负数向上,正数向下)自动布局构造函数原创 2017-12-06 15:55:14 · 850 阅读 · 3 评论 -
XZ_Swift之! 、? 和 ?? 的区别
1、定义可选项 ‘?’ 定义可选项 ‘!’对可选项解包,强行解包 不同类型的值,不能直接运算!如果没有值是 nil 不是任何数据类型,不能参与计算 ‘!’强行解包 - 从可选值中强行获取对应的非空值,如果值是 nil,就会崩溃!// 定义:‘?’用来定义 y 是一个可选的Int类型,可能没有值,也可能是一个整数let y: Int? = 20print(y!)// 定义模型属性的时原创 2017-11-27 10:50:32 · 346 阅读 · 0 评论 -
XZ_Swift之控制流
由于可选项的内容可能为 nil, 而一旦为 nil 则不允许参与运算; 因此在实际开发中,经常需要判断可选项的内容是否为 nil; 如果单纯使用 if,会让代码嵌套层次很深,让代码不宜阅读和维护,为了解决这一问题,苹果提供了以下三种方式: 1> ?? 运算符用于判断 变量/常量 的数值是否是 nil ,如果是则使用后面的值替代;在Swift开发中, ?? 能够简化代码的编写。 2> if原创 2017-12-21 22:53:03 · 321 阅读 · 0 评论 -
XZ_Swift之Swift面向对象
Swift面向对象 1、关于命名空间 在 Swift 中,默认同一个项目中,所有的类都是共享的,可以直接访问,不需要 import 所有对象的属性 var,也可以直接访问到 在Swift中,所有类都默认有一个命名空间,就是项目名称 同一个Person类,从属于不同的命名空间! OC定义类的时候,会有前缀:NS、XZ、WY…2、必选属性的构造函数 2.原创 2017-12-21 22:33:58 · 745 阅读 · 0 评论 -
XZ_Swift之Swift基础第二篇
本篇文章包括的基础概括:数组、字典、元组 可选类型和函数。 一、数组 介绍 数组(Array)是一串有序的由相同类型元素构成的集合; 数组中的集合元素是有序的,可以重复出现; Swift中的数组是Array,是一个泛型集合; 数组分成:可变数组和不可变数组,使用let修饰的数组是不可变数组,使用var修饰的数组是可变数组 1、初始化// 定义一个可变数据,必须初始化才能使用var原创 2017-10-30 10:19:25 · 542 阅读 · 1 评论 -
XZ_Swift之Swift中的错误/异常处理、反序列化
Swift 2.0 推出的新的异常处理方法:使用 do-catch 机制获取和处理异常 try? 如果解析成功,就有值,如果转换失败,大多数会返回nil try! 当开发者非常确定某个方法或者函数,在使用时候是绝对不会抛出任何异常的,这种情况下我们可以使用 try! do-catch 最安全,但是也是最麻烦的 获取和处理异常,使用 catch 可以对异常的解析进行更为高级的处理 使原创 2017-12-09 16:15:47 · 435 阅读 · 0 评论 -
XZ_Swift之加载本地json数据、将json数据写入磁盘、从磁盘读取json数据
加载本地json数据创建子控制器 将 json 数据写入磁盘 从磁盘读取json数据1、加载本地json数据,使用json数据创建子控制器// 从 Bundle 中加载配置的 json// 1.路径 2.加载 NSData 3.反序列化转换成数组guard let path = Bundle.main.path(forResource: "main", ofType: "jso原创 2017-12-09 15:50:58 · 1503 阅读 · 0 评论 -
XZ_iOS之1. 2 Safety: User Generated Content、4. Design: Preamble、5. 1.1 Legal: Privacy的解决方案
苹果拒绝的原文:发件人 Apple 1. 2 Safety: User Generated Content 4. Design: Preamble 5. 1.1 Legal: Privacy - Data Collection and StorageGuideline 1.2 - Safety - User Generated Content Your app...原创 2019-01-31 14:14:33 · 1151 阅读 · 0 评论 -
XZ_iOS 之 2.1大礼包被拒绝的处理和第三方授权登录被拒
2.1大礼包,苹果拒绝的原文:发件人 Apple 2. 1 Performance: App CompletenessGuideline 2.1 - Information Needed This type of app has been identified as one that may violate one or more of the following App St...原创 2019-01-31 13:52:27 · 580 阅读 · 0 评论 -
XZ_iOS之LD算法实现字符串相似度的比较
目录思路OC的代码实现:Swift版的代码实现:例如:文字段1:“初始化第一列”和 文字段2:“初始化第一行”,这两段文字的相似程序比较,可以看出这两句只要一个字不同,那相似程度就是 1- 1/6 = 5/6 ≈ 0.833333。相似程度的计算公式就是:相似程度(百分比) = 1 - (不同的字符个数)/MAX(文字1,文字2)注意:不同的字符个数,指的是同一个位置...原创 2018-09-11 15:21:56 · 993 阅读 · 0 评论 -
XZ_iOS之资料查找不错的网址
https://docs.swift.org/swift-book/LanguageGuide/TheBasics.htmlhttps://ioscaff.com/docs/the-swift-programming-language/4.2https://developer.apple.com/documentation/https://developer.apple.com/doc...原创 2018-09-01 23:04:38 · 252 阅读 · 0 评论 -
XZ_iOS之父子控制器以及使用父子控制器仿淘宝详情页
仿淘宝详情页,利用父子控制器,实现相同效果效果图展示:实现思路点击“分享”弹出来的页面,使用透明的控制器实现效果;点击“查看评价”出来的页面,作为当前控制器的子控制器,它的view添加到当前控制器的view上,再添加一个从右往左的效果即可。实现代码https://github.com/CoderXAndZ/XZPushAnimation父子控制器1、控制器父子关系的...原创 2018-08-29 20:43:04 · 349 阅读 · 0 评论 -
XZ_iOS之加载gif动画
1、使用 webView 加载本地gif实现代码:guard let bundle = Bundle.main.path(forResource: "duck.gif", ofType: nil), let gif = NSData.init(contentsOfFile: bundle) else { return原创 2018-02-02 16:19:10 · 465 阅读 · 0 评论 -
XZ_iOS之实现textView占位文本和占位图片
最近项目需求,实现 textView 左侧有一个类似于 label 的 leftView 的图片效果 且 能自适应高度,所以,自定义了一个 textView 实现了效果,顺带着完善了一下,实现了 textView 设置占位字符,修改占位字符颜色/字体大小,设置最大行数、设置圆角等功能;1、实现左侧图片的效果效果图如下:实现代码:/// 设置图片var hasImage原创 2018-02-02 14:41:53 · 1150 阅读 · 1 评论 -
XZ_Swift之刷新的原理及实现、美团刷新
1、简单刷新 苹果默认的刷新控件存在的问题: 1>拉到一定距离自动刷新,即使用户没有松手也会刷新,给用户的体验不好,且浪费用户的流量; 2>调用 beginRefreshing,不显示菊花转圈;刷新的实现思路: 1>、保证用户拉到足够距离之后,放手,才会刷新; 2>、继承自 UIControl,所有的接口定义和苹果原生基本一致,通过 KVO 监听刷新控件的 contentOffset原创 2018-01-08 11:54:58 · 934 阅读 · 1 评论