
iOS
文章平均质量分 60
iMazy
不同的思想、不同的路、不同的人生!
展开
-
SwiftUI基础 - Image 图片
Image 图片在SwiftUI中, 使用 Image 渲染图片, Image 可以加载 资源包, 系统图标, UIImage 等图片资源.基本用法1.从资源包内加载图片Image("cat")2.加载UIImage图片Image(uiImage: UIImage(named: "dog")!)3.加载苹果的 SF Symbols IconImage(systemName: "cloud.heavyrain.fill") .font(.largeTitle)属性设置内容显示原创 2022-01-17 22:58:34 · 6346 阅读 · 0 评论 -
SwiftUI基础 - 文本
Text 文本基础使用Text 作为 SwiftUI 中一个基本的控件, 等价于 UIKit 中的 UILabel, 但它可以用更少的代码,实现 UIKit 中对文本的复杂操作。Text("Hello SwiftUI") // 设置文本内容 .lineLimit(3) // 限制行数 .truncationMode(.middle) // 截断方式 .frame(maxWidth: .infinity, alignment: .leading) // 设置大小 .fon原创 2022-01-17 22:19:32 · 2266 阅读 · 0 评论 -
Swift - 为您的应用添加黑暗模式 (Dark Mode)
英语原文地址:Dark Mode: Adding support to your app in Swift - SwiftLeeDark Mode在iOS 13中引入,并在WWDC 2019上宣布。它为iOS添加了更暗的主题,并允许您对应用执行相同的操作。这是给用户的绝佳补充,使他们可以在较暗的设计中体验您的应用程序。在此博客文章中,我们将暗模式支持添加到“ WeTransfer收集”应用程序后,我将与您分享我的经验。退出并禁用黑暗模式在我们开始采用Dark界面风格之前,我想简短地告诉您如何选择退出翻译 2020-05-16 21:08:36 · 2644 阅读 · 0 评论 -
Swift - Typealias 在 Swift 中的用法
英语原文地址:Typealias usage in Swift - SwiftLeeSwift 中的typealias实际上是现有类型的别名。很简单,不是吗?它们可以使您的代码更具可读性。通过以一种聪明的方式使用它们,它们在您的代码库中会非常有用。声明类型别名可以在 Swift 中使用typealias关键字和要分配的类型声明typealias。理解如何使用它们的一个非常简单的示例是为货币(如美元)创建别名。以收据结构的以下示例为例:struct Receipt { let totalC翻译 2020-05-16 12:08:48 · 614 阅读 · 0 评论 -
iOS-UUID和UDID
UUID UDID原创 2016-03-03 11:44:06 · 1007 阅读 · 0 评论 -
iOS-WebKit之WKWebView(一个高性能的WebView)
iOS 8.0之后,苹果退出全新的WebKit库,其中WKWebView控件的新特性与使用方法,它很好的解决了UIWebView存在的内存、加载速度等诸多问题。一、WKWebView新特性1、在性能、稳定性、功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WKWebView占用23M,而UIWebView占用85M);2、允许JavaScript的Nit原创 2016-03-17 12:16:55 · 2572 阅读 · 0 评论 -
iOS-UIBezierPath绘制基本图形
UIBezierPath UIBezierPath可以创建基于矢量的路径,此类是Core Graphics框架关于路径的封装。使用此类可以定义简单的形状,如椭圆、矩形或者有多个直线和曲线段组成的形状等使用UIBezierPath画图步骤: 1、创建一个UIBezierPath对象 2、调用-moveToPoint:设置初始线段的起点 3、添加线或者曲线去定义一个或者多个子路径 4、改变UI原创 2016-03-17 13:01:51 · 1155 阅读 · 0 评论 -
iOS-静态库及其制作
一、什么是库库是共享程序代码的方式,一般分为静态库和动态库。二、静态库与动态库的区别静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。三、静态库和动态库的存在形式静态库:.a 和 .framework动态库:.dylib 和 .framework四、静态库的特点 :原创 2016-03-20 15:50:15 · 460 阅读 · 0 评论 -
iOS-NSLayoutConstraint(代码约束)
随着StoryBoard 和 XIB 的普及,屏幕适配变的很快很直观也很简洁,但是它也是有缺点的。代码适配虽然很复杂,但对于简单视图的约束,还是可以的,各有利弊。 一、StoreBoard 优点: 1、效率高; 2、Auto Layout,做适配很方便; 3、多语言很方便; 4、静态TableView,Collect原创 2016-03-20 18:53:27 · 605 阅读 · 0 评论 -
iOS-支付宝浅究
* 研究了几天的支付宝,将个人的理解分享给大家,不够完善,里面肯定有Bug,请及时提出来,共同学习,共同成长。* 1、个人不能申请成为支付宝账户; 2、在找支付宝帮忙支付之前需要自己对订单信息进行封装,一般订单信息包括PID(Parter_ID)商户ID、UID(user_ID)用户ID、商品ID、商品单价,商品数量、收货人信息(收货人姓名、地址、联系方式等)、私钥等; 3、前端创建完订单信原创 2016-03-11 20:44:10 · 923 阅读 · 0 评论 -
iOS-通知中心
通知中心,可以理解为广播站,负责发送通知消息的。通知,可以理解为广播,是一对多的,也是同步的。通知中心,先添加观察者,并设置动作,谁接收到通知谁就去执行动作。通知第一步:通知中心添加通知,并指定观察者和需要去执行什么方法 通知第二步:设置观察者接收到通知后需要执行的具体动作 通知第三步:通知中心发出通知(当执行这一步后,通知接收者就会执行第二步设置的动作) 通知第四步:移除通知,当不需要通知时原创 2016-02-28 12:20:52 · 585 阅读 · 0 评论 -
iOS-部分设计模式
一、代理模式应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。列表row个数delegate自定义的delegate 二、观察者模式应用场景:一般为model层对,controlle原创 2016-02-28 12:46:25 · 632 阅读 · 0 评论 -
iOS-KVO
**KVO**原创 2016-02-28 16:47:56 · 503 阅读 · 0 评论 -
iOS-UITableView图解
图制作比较久了,突然翻出来,就贴上来了,因为之前没写博客,所以现在才贴出来。虽然比较简单,都是基础,但之前也花费了很多。原创 2016-03-14 10:15:03 · 715 阅读 · 0 评论 -
iOS-轮播图无限滚动原理图解
继上一篇图解,不多说了,直接看图。原创 2016-03-14 10:20:44 · 898 阅读 · 0 评论 -
iOS-常用类继承图详解
这张图做出来有很久了,记得花费了半天的时间,总结的比较细,对于初学者是个不错的选择。原创 2016-03-14 10:25:34 · 749 阅读 · 0 评论 -
iOS-Touch移动图解和控制器嵌套
一、Touch移动原理二、标签视图控制器和导航视图控制器之间的嵌套关系图原创 2016-03-14 10:32:58 · 881 阅读 · 0 评论 -
iOS-网络通信协议
一、协议1、TCP2、UDP3、TCP/IP4、HTTP5、HTTPS1、HTTP协议:基于TCP连接的,主要解决如何包装数据,对应于应用层; 2、TCP/UDP协议:主要解决数据如何在网络中传输,对应于传输层; 3、IP协议:对应于网络层;在传输数据时,可以只使用传输层(TCP/IP),但是那样的话,由于没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用应用层协原创 2016-03-14 15:48:51 · 2359 阅读 · 0 评论 -
iOS-Socket
一、Socket的基础概论socket:学名套接字,俗称插座socket = IP + 端口号Socket就是为网络服务提供的一种机制通信的两端都是Socket网络通信其实就是Socket间的通信1、Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。2、Socket描述了一个IP、端口对。它简化原创 2016-03-14 15:53:13 · 603 阅读 · 0 评论 -
iOS-获取验证码中的倒计时功能
当我们使用手机号码注册或登录时,很多时候需要用到获取验证码功能,前几天写了通过Mob第三方获取验证码功能,今天写一些细节,就是点击获取验证码按钮后,为了防止用户频繁获取,限定60秒之内只能获取一次,此时,就需要用到倒计时功能; 原理是让验证码按钮在这60秒之内,点击事件失效。效果如下: 目前流行的倒计时方法有两种: 一种是通过NSTimer计时器实现;原创 2016-04-28 16:04:46 · 1026 阅读 · 2 评论 -
iOS-开发之 pch 文件的使用
首先说一下pch的作用:1.存放一些全局的宏(整个项目中都用得上的宏)2.用来包含一些全部的头文件(整个项目中都用得上的头文件)3.能自动打开或者关闭日志输出功能在Xcode 6.0 之前,Xcode创建工程会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问。是一个预编译文件。但在Xc原创 2016-04-25 17:04:10 · 751 阅读 · 0 评论 -
iOS-使用第三方实现短信验证码功能
目前,很多App是通过短信验证码来实现用户注册和登录功能,目前市面上绝大多数的短信SP提供商都是需要付费才能提供这种服务,价格普遍在0.07元/条左右; 建议:如果公司比较大,开发人员充足,时间充足的话,通过自己的服务器实现短信验证码是最好的选择 一般的小型公司,集成第三方短信验证平台,其结构如下: 1、在没有短信服务端验证接口的时候,第三方服务器需要知道用户是否验证成功 2、当引入了自原创 2016-04-22 16:35:51 · 5499 阅读 · 0 评论 -
iOS-利用粒子发射器(CAEmitterLayer) 制作发射动画
CAEmitterLayer,是CALayer子类,自iOS 5.0以后推出,是一个高性能的粒子引擎,被用来创建实时粒子动画; CAEmitterCell,类似于一个CALayer,自带一个contents属性,用于设定CGImage图像; CAEmitterLayer可以理解为是CAEmitterCell的容器,可以包含多种CAEmitterCell的cells;结果如下图: 粒子图片素材原创 2016-04-21 16:02:44 · 1397 阅读 · 0 评论 -
iOS-利用Block二次封装AFNetworking 3.0
现在我们网络请求大都用第三方工具—–AFNetworking; 其中,AFNetworking 3.0 是对 NSURLSession 进行的封装,简化了很多步骤,但是在现实开发中,我们可以将AFNetworking再次封装到一个类中,这样通过传去URL和Parameters 就可以进行网络请求。具体实现步骤: 前期准备:导入AFNetworking第三方框架1、新建一个工具类,继承自NSObj原创 2016-04-20 16:16:12 · 6057 阅读 · 0 评论 -
iOS-AFN 3.0 前后区别及具体用法
在AFNetworking 3.0之前,底层是通过封装NSURLConnection来实现的。 在AFNetworking 3.0之后,也就是在iOS 9.0 之后,NSURLConnection被弃用,苹果推荐使用NSURLSession来管理网络请求,所以AFNetworking 3.0之后,底层是通过封装NSURLSession来实现的。从AFNetworking 3.0中之后,下面三个方法原创 2016-04-20 15:41:07 · 4760 阅读 · 0 评论 -
iOS-修改TableView分割线样式
样式一:原始分割线(左边不到屏幕左边缘) _MyTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 三种结构体样式: /** UITableViewCellSeparatorStyleNone, 没有分割线 UITableViewCellS原创 2016-04-20 14:16:39 · 11493 阅读 · 0 评论 -
iOS-tableView底部按钮的添加
话不多说,先看图1、将按钮添加到tableView的最后一个cell中2、将按钮添加到tableFooterView上3、在tableView的最下端固定一个View项目需求,总结了几个常用的关于tableFooterView的使用 方式一实现思路: 很简单,自定义一个cell,上面放一个button,放到tableView最后一个row中 代码就不贴了。方式二关键代码: // 定义一个原创 2016-05-14 17:02:07 · 9420 阅读 · 0 评论 -
iOS-UIScrollView与UISegmentedControl的交互
先看图 第一个视图 第二个视图 两者交互 在实际开发中,很多时候用到UISegmentedControl,而它与UIScrollView简直是绝配 这里的视图布局我用storyboard做的,无法展现给大家,大家有问题可以发邮件联系我,相互学习 邮箱:mazy88@163.com,欢迎相互交流学习下面主要放一些UIScrollView与UISegmentedControl的交互的代码原创 2016-05-14 17:24:13 · 1224 阅读 · 0 评论 -
iOS-通过UISwitch控制摇一摇
很多项目中用到了摇一摇功能,当我去实现的时候,发现很多问题: 1、如何控制摇一摇功能?即打开和关闭 2、如何在所有控制器中实现摇一摇功能?摇一摇功能很好实现,但如何控制它,却不那么简单,我找了很多资料,最后决定用NSUserDefaults属性存储来控制摇一摇功能具体实现细节 我在个人设置里面添加摇一摇开关 1、通过NSUserDefaults属性存储保存UISwitch开关的状态(解决原创 2016-05-14 17:47:10 · 1103 阅读 · 0 评论 -
iOS-UIAlertController的另类使用
先看图,意外发现很神奇的东西,最后发现……其实就是UIAlertController 这个风格用的比较少 具体实现代码:- (IBAction)alertAction { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"致开发者的一封信" message:@"有了您的支持原创 2016-05-14 17:58:59 · 829 阅读 · 0 评论 -
iOS-TWRProgressView
最近在GitHub上看到一个实用的功能,分享一些 直接看图 也可以横向渲染 关键代码@property (weak, nonatomic) TWRProgressView *ProgressView; UIImage *image = [UIImage imageNamed:@"social_icon"]; // 添加 iamge 到 TWRProgressVi原创 2016-05-30 10:01:07 · 589 阅读 · 0 评论 -
iOS-UIImage图片拉伸
声明:此文参考MJ博客,地址: iOS图片拉伸技巧 项目中经常会遇到这种图,作为UITextField或者UIButton的背景,一看图片,就知道必须要进行拉伸才能得到想要的结果;举例说明: 当我们把图片直接设置给UITextField背景时,结果是这样的: // 初始化一个 UITextField UITextField *textField = [[UITextField a原创 2016-05-17 15:23:37 · 795 阅读 · 0 评论 -
iOS-改变UITextField的占位文字颜色(三种)
有时,UITextField自带的占位文字的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改占位文字的颜色,所以只能通过其他间接方式去修改。例如:系统默认的占位文字颜色太浅 需要加深颜色,或者改变颜色原创 2016-06-28 14:19:18 · 5226 阅读 · 2 评论 -
iOS-图片倒圆角的三种方式
开发中,经常会遇到图片倒圆角,比如说用户图像等等,这里列举三种常用的方法,并分析各自的优缺点。方法一:通过layer图层来设置图片圆角 imageView.layer.cornerRadius = imageView.bounds.size.height * 0.5; imageView.layer.masksToBounds = YES;优点:方便快捷,适合单一的图片倒圆角,例如用户原创 2016-06-29 17:17:02 · 2994 阅读 · 0 评论 -
iOS-OC调用JS的多种形式
在学习调用之前,说下UIWebView的数据请求及主要代理方法通过 webView 请求数据 // 获取资源请求路径 NSString *urlPath = [[NSBundle mainBundle] pathForResource:@"text.html" ofType:nil]; // 创建URL NSURL *url = [NSURL URLWithString原创 2016-07-12 17:39:54 · 700 阅读 · 0 评论 -
iOS-JS调用OC
上次学习的是OC调用JS,通过OC的代码,操作JS的代码,对JS代码进行增删改查,以及调用JS的方法;今天,学习下JS调用OC。上次对WebView进行简要的分析,今天就直接进主题,在iOS开发中,JS调用OC主要是通过下面这个函数来实现的:#pragma mark - <UIWebViewDelegate>/** * 通过这个方法完成JS调用OC */-(BOOL)webView:(UIW原创 2016-07-13 10:38:49 · 2156 阅读 · 0 评论 -
iOS-copy与mutableCopy浅析
在iOS开发中,当提到深拷贝和浅拷贝的时候,大家都说懂,简单;都会说,浅拷贝:指针(地址)拷贝,不会产生新对象;深拷贝:内容拷贝,会产生新对象 但当问及大家copy与mutableCopy的时候,他们各自是深拷贝还是浅拷贝的时候,谁又有底气答对呢?下面一起研究下吧1、不可变字符串的拷贝 NSString *string = @"string"; NSString *str1 =原创 2016-07-13 16:40:33 · 4765 阅读 · 1 评论 -
iOS-常见的数据存储方式
iOS中常见的数据存储方式Plist(NSArray\NSDictionary)Preference(偏好设置\NSUserDefaults)NSCoding(NSKeyedArchiver\NSkeyedUnarchiver)SQLite3 (C语言,轻量级)Core Data(OC语言,底层基于SQLite,重量级)前三种方法适合存储简单的数据类型 后面两种适合存储大量数据,但Co原创 2016-07-26 12:00:52 · 552 阅读 · 0 评论 -
iOS-数据存储之FMDB
FMDB是一套OC语言,面向对象,基于SQLite,轻量级的数据存储API, 因其操作简单,避免了SQLite复杂的C语言编程,被广泛应用。FMDB的github地址: https://github.com/ccgus/fmdbCocoaPods 安装:pod 'FMDB'手动安装:将FMDB文件夹直接拖到工程内由于FMDB是基于SQLite的,所以需手动导入 libsqlite3.0.tbd原创 2016-07-26 14:49:33 · 608 阅读 · 0 评论 -
iOS-多线程之NSThread
在iOS开发中,为了合理利用CPU的多核,提高程序的执行效率 和 用户体验,我们需要使用多线程。iOS中常用的多线程技术有:NSThread,GCD,NSOperation1 NSThread:OC语言,面向对象,简单易用,可直接操作线程对象;2 GCD:C语言,旨在替代NSThread,充分利用了CPU的多核,不需要考虑线程的生命周期;3 NSOperation:OC语言,面向对象,基于GCD原创 2016-07-07 10:23:25 · 1319 阅读 · 0 评论