![](https://img-blog.csdnimg.cn/20190916194719612.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
iOS
文章平均质量分 74
Ryanw丶
.
展开
-
SwiftUI 2 -- matchedGeometryEffect
简介适用于iOS14和Xcode12的新技术,matchedGeometryEffect是SwiftUI新的效果,可以篡改两个视图的大小和位置。基础SwiftUI已经为我们提供了无需matchedGeometryEffect工具的,篡改视图属性。在下面的例子中我们可以使用轻击矩形来实现大小改变动画。struct ContentView: View { @State private var isExpanded = false var body: some View {原创 2021-02-22 10:01:41 · 803 阅读 · 0 评论 -
iOS - Cell数据归档与反归档
待实现需求:加载Cell先使用本地数据优化用户体验,再请求网络数据重新加载。归档归档操作我们需要将加载App网络请求的数据归档实时写入沙盒中保存。iOS沙盒机制可以查看此文章我们这里将网络数据写入到Cache目录下Data目录下的list文件。使用NSSearchPathForDirectoriesInDomains取出沙盒路径。根据沙盒路径创建需创建文件路径。使用FileManager文件管理器创建相应的目录和文件。将对象(这里是类型数组)序列化成Data将data归档写入文...原创 2020-11-30 16:42:13 · 175 阅读 · 0 评论 -
iOS - 沙盒机制初探
沙盒机制什么是沙盒?沙盒通过限制应用的执行操作来显著提高操作系统的安全性,在iOS上一个应用无法访问另一个应用程序的沙盒。每一个应用都具有一个沙盒,是可以用来存储数据的目录。如果应用需要访问的数据不在沙盒上,则需要通过系统接口请求数据。例如:应用程序无法直接访问用户设备的照片,要访问用户照片第三方应用程序需要访问系统界面,系统界面增加一层安全性。沙盒在哪?在xcode工程中,使用NSHomeDirectory()来查看沙盒的根路径。func application(_ application: U原创 2020-11-26 16:22:17 · 751 阅读 · 0 评论 -
iOS - Cell网络请求数据加载
待实现需求:使用网络请求数据加载UITableViewCell。数据准备返回JSON数据的URL{ "reason": "成功的返回", "result": { "stat": "1", "data": [ { "uniquekey": "ef422a4971e5d8f31b16e0397aaaf240", "title": "小雪节气,多吃这4种补锌食物...原创 2020-11-21 14:40:34 · 537 阅读 · 0 评论 -
iOS - 点击Cell内部Button弹窗实现
待实现需求:在Cell中点击Button实现弹窗效果,点击弹窗中的Button实现Cell的数据源删除。设计弹窗首先我们需要设计一个弹窗视图,以一个简单的弹窗代码为例。#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface DeleteCellView : UIView// 展示弹窗,实现弹窗内部Button点击方法- (void)showDeleteViewFromPoint:(CGPoint)point cl...原创 2020-11-19 16:20:50 · 693 阅读 · 0 评论 -
2020年最新App Store应用上架流程
1. 账号准备,加入苹果开发者账号2. 完成各种配置Certificate:证书是用来给应用程序签名的,只有经过签名的应用程序才能保证他的来源是可信任的,并且代码是完整的,未经修改的。在Xcode Build Setting的Code Signing Identity中,你可以设置用于为代码签名的证书。证书主要分为两类:Development和Production,Development证书用来开发和调试应用程序,Production主要用来分发应用程序。APP ID: 用于标识一个或者一组App,A原创 2020-11-08 11:48:18 · 3840 阅读 · 1 评论 -
底部输入框组件的一次实践
底部输入框:常用于文章的评论,分享,点赞。造一个通用的组件能帮助开发使用。入坑点:一开始根据设计稿8种类型设置了枚举,通过关联值来传递参数,在viewdidload中switch type来动态添加子视图,根据初始化方法中是否带文本来添加按钮旁的文本,整个布局视图代码臃肿、繁琐重复,代码质量是十分差可重用性也差。改善思路:同事推荐官方navigationItem.leftBarButtonItems的思路来写,根据传入的item数组来动态创建。限制左右item的数量,根据item一次创建视图然后更.原创 2020-08-24 17:03:42 · 198 阅读 · 0 评论 -
Say Goodbye to SceneDelegate -- SwiftUI
Say Goodbye to SceneDelegate在WWDC20之前,使用SwiftUI创建视图,你必须将其包装在UIHostingController,Controller被包装在一个UIWindow,window在SceneDelegate中定义。import UIKitimport SwiftUI// Auto-generated codeclass SceneDelegate: UIResponder, UIWindowSceneDelegate { var window原创 2020-08-11 13:32:34 · 245 阅读 · 0 评论 -
Swift如何实现与JSON互转
JSONDecoder与JSONEncoder通过 Codable 协议实现Swift对象与JSON字符串之间的互转。public typealias Codable = Decodable & EncodableCodable 是 Decodable 和 Encodable 的类型别名。当你遵守 Codable 协议时,同时遵守Decodable 和 Encodable 协议。Swift 标准库类型都实现了 Codable , 比如 String , Double , Int 等,原创 2020-07-29 14:23:16 · 1941 阅读 · 0 评论 -
SwfitUI中some关键字是什么含义?
以下是打开新建SwiftUI项目的默认代码。import SwiftUIstruct ContentView: View { var body: some View { Text("Hello, World!") }}struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() }}ContentVie原创 2020-07-24 15:25:07 · 761 阅读 · 0 评论 -
ReactiveCocoa初探
更多图片等细节见GitHubReactiveCocoaIntroductionAs an iOS developer, nearly every line of code you write is in reaction to some event; a button tap, a received network message, a property change (via Key Value Observing) or a change in user’s location via Cor.原创 2020-07-17 14:28:32 · 353 阅读 · 0 评论 -
iOS 设计模式MVC、MVVM初探
MVC 与 MVVMMVC说起MVC,必须拿斯坦福大学公开课上的这幅图来说明,这可以说是最经典和最规范的MVC标准。MVC在iOS中的实现思路: 一句话描述就是Controller负责将Model的数据用View渲染展示。MVC如何产生APP的实质就是界面与数据的交互。需要类负责界面的渲染展示,于是有了View需要类负责管理数据,于是有了Model我们设计的View应该能显示任意的内容,比如UILabel显示的文字应该是任意的而不只是某个特定Model的内容,所以我们不应该在View原创 2020-07-09 19:26:48 · 295 阅读 · 0 评论 -
UIScrollView
UIScrollViewA view that allows the scrolling and zooming of its contained views.UIScrollView是一个允许滚动和缩放其内容的视图。概述UIScrollView是UIKit类中多个类的父类,例如UITableView,UICollectView和UITextView。UIScrollView对象的中...原创 2020-02-29 19:43:18 · 160 阅读 · 0 评论 -
iOS-循环引用
循环引用强引用:某个对象被strong指针强引用,指针未置为nil对象不会被销毁。弱引用:某个对象被weak指针弱引用,对象销毁weak置为nil。只要一个对象没有被strong指针指向那么该对象就是nil。循环引用的实质:多个对象之间有强引用,不能释放让系统回收。typeof与typedeftypeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。可以理解为:我们根据typeof()括号里面的变量,自动识别变量类型并返回该类型。常用于循环引用中。typedef:定义一种类型的别原创 2020-06-19 19:53:32 · 337 阅读 · 0 评论 -
iOS-KVO初探
KVO全称为Key Value Observing,键值监听机制,由NSKeyValueObserving协议提供支持,NSObject类继承了该协议,所以NSObject的子类都可使用该方法。实现KVO注册监听移除监听接受通知我们一为WKWebView添加一个网页请求进度加载条为例。实现一个简单的观察逻辑。我们首先完成简单的UI逻辑。//// DetailView...原创 2020-03-12 10:04:14 · 325 阅读 · 0 评论 -
UICollectionView
UICollectionViewAn object that manages an ordered collection of data items and presents them using customizable layouts.一个对象用来管理数据项的有序集合并可以通过自定义布局展示。声明@interface UICollectionView : UIScrollView...原创 2020-02-29 10:57:16 · 278 阅读 · 0 评论 -
UITableView
UITableViewA view that presents data using rows arranged in a single column.视图通过使用单列的行展示数据。声明@interface UITableView : UIScrollView概述iOS上的表格视图通过分行显示一列垂直滚动的内容。UITableView的架构由headerview、cell、f...原创 2020-02-27 11:59:19 · 335 阅读 · 0 评论 -
UIWindow
UIWindowThe backdrop for your app’s user interface and the object that dispatches events to your views.UIWindow是应用用户界面的背景和调度事件反馈到视图的对象。声明@interface UIWindow: window概述Windows与视图控制器配合使用来处理事件和完...原创 2020-02-27 10:32:28 · 188 阅读 · 0 评论 -
UINavigationController
UINavigationControllerA container view controller that defines a stack-based scheme for navigating hierarchical content.一个定义基于堆栈结构的导航分层内容的容器视图控制器。声明@interface UINavigationController : UIViewCont...原创 2020-02-26 19:56:57 · 385 阅读 · 0 评论 -
UITabBarController
UITabBarController概念A container view controller that manages a radio-style selection interface, where the selection determines which child view controller to display.一个容器视图控制器,用于管理无线电样式的选择界面,选择决定...原创 2020-02-25 20:56:07 · 284 阅读 · 0 评论 -
iOS13移除StoryBoard
iOS13移除StoryBoard当我们想要使用纯代码构建时,不需要storyboard时如何删除呢?Objective-C删除Main.storyboard文件(SceneDelegate.h和SceneDelegate.m文件可删可不删)删除Info.plist文件Main storyboard file base name项和Application Scene Manifest项...原创 2020-02-25 18:32:44 · 1102 阅读 · 0 评论 -
App Store卡片过渡动画模拟
iOS的原生应用都是设计师和工程师精心设计的,Weather的scrollview滚动动画,Settting的interaction交互式动画,App Store的Card过渡动画等等。都有很多我们值得学习的地方,今天我们模拟App Store的卡片动画App Store动画模拟学习参考教程自定义过渡动画教程如何实现自定义过渡动画的方法不再讲述,这里直接实现动画过程。参考动画效果To...原创 2020-02-05 11:41:55 · 1542 阅读 · 0 评论 -
iOS Transform动画
Transform动画iOSTransform动画是基于frame属性结合animate方法构成的动画效果,应用于视图的二维、三维层次的变化。view.transform:是View的旋转、拉伸、移动等属性,是2D的,是CGAffineTransform属性。view.layer.transform:是layer层的3D变化,是CATransform3D 属性。view.transfo...原创 2020-02-04 12:28:26 · 622 阅读 · 0 评论 -
iOS自定义过渡动画
转场方式首先让我们来了解iOS转场的方式:UINavigationController push/pop UIViewController导航栏的转场UITabBarController 切换Tab的转场present/dismiss 模态的方式转场这是iOS提供的3种基本转场方式,默认的转场方式转场风格有限。例如模态转场中,尽管有modalPresentationStyle和mod...原创 2020-02-02 21:11:30 · 3742 阅读 · 0 评论 -
iOS AVFoundation
AVFoundationAVPlayerAVPlayer是一个控制器对象,用于管理媒体资源。AVPlayer基于本地文件或远程文件媒体播放。AVPlayer用于一次播放单个媒体资源,可以使用replaceCurrentItem(with:)方法重用播放器实例来播放气体媒体资源,但同一个时刻只能管理一个媒体资源,使用AVQueuePlayer来创建和管理媒体播放的队列。AVPlayer是一个动...原创 2020-01-20 20:08:24 · 942 阅读 · 0 评论 -
CollectionViewSlantedLayout
[Third-party-library-awesome-demo](https://github.com/ChinaWxq/Third-party-library-awesome-demoCollectionViewSlantedLayoutCollectionViewSlantedLayout is a subclass of the UICollectionViewLayout ...原创 2020-01-19 17:41:19 · 541 阅读 · 0 评论 -
iOS UITableView
UITableViewCell注册复用和不注册复用的问题如果混淆注册Cell、不注册复用Cell,就会引起Cell的乱用。不注册复用Cellfunc dequeueReusableCell(withIdentifier: String) -> UITableViewCell?Returns a reusable table-view cell object located by it...原创 2019-12-11 16:30:30 · 504 阅读 · 0 评论 -
GCD详解
基本概念并行: 多个任务同时执行串行:一个任务执行完成后,再执行下一个任务同步:在当前线程中执行任务,不会开启新线程异步:在新的线程中执行任务GCD的Dispatch QueuesGrand Central Dispatch 的基本概念就是dispatch queue调度队列,可以是并发的,可以是串行的。调度队列有三种类型:The main queue 串行队列,和应用程序...原创 2019-12-06 21:52:45 · 5667 阅读 · 0 评论 -
UIView扩展属性
每个视图除了有子视图之外,还可以像Photoshop中更精细的图层来构成,常用的图层有边角属性、阴影色、偏移、透明度、边框粗细等,现在还不能像Photoshop一样直接使用这些属性,需要写代码对其扩展,利用Swift语法的属性扩展Xcode的IBInspectable属性,可以只写一次代码,在属性栏直接设置。新建UIViewHelper.swift// View视图属性扩展// UIVi...原创 2019-09-26 19:14:16 · 453 阅读 · 0 评论