ios开发大揭秘
讲解基于mac平台ios入门到高级的开发技术,讲解最新的基于swift语言在ios开发的技巧和实战,讲解ios开发中遇到的常见问题。
xiangzhihong8
著有《React Native移动开发实战》、《Kotlin入门与实战》、《Weex跨平台开发与实战》、《React Native开发进阶》和《Flutter跨平台开发实战》,正努力完成《Android应用架构实战》
-
原创 Apple Developer支持大陆开发者注册苹果开发者计划
苹果在上月举行的全球开发者大会(WWDC)上宣布启用官方APP,名称“苹果开发者应用”(Apple Developer App),并在昨日的版本更新中苹果放出了针对中国开发者的一项福利。自今天开始,中国大陆地区的开发者可以通过这款APP更加轻松地注册 Apple Developer Program,并在 iPhone 或 iPad 上使用当地付款方式购买会员资格,因此对于没有Visa信用卡的开发中...2019-12-18 15:24:53884
3
-
原创 使用podspec创建iOS插件
概述在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...2018-12-20 19:47:55393
0
-
原创 HandyJSON库简介
背景JSON是移动开发中常用的应用层数据交换协议。最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本到具体的Model,再把对应数据展现到页面上。但在编程的时候,处理JSON是一件麻烦事。在iOS开发中,在不引入任何轮子的情况下,通常需要先把JSON转为Dictionary,然后还要记住每个数据对应的Key,用这个Key在Dictionary中...2018-10-12 10:12:474528
0
-
原创 iOS 12正式版新特性总结
距离苹果WWDC发布会举行已久,苹果在昨日(9月18)开始向用户推送iOS 12 GM版,据称本次iOS的更新内容主要是性能方面的提升,打开相机的速度提升70%,屏幕键盘呼出速度提升50%,其它App启动速度提升2倍。下面让我们看看究竟哪些设备将支持iOS 12 :iOS 12 新特性##1, 性能据苹果介绍,iOS 12 将使得 iPhone 或 iPad 的操作更加快速和灵敏,比如应...2018-09-19 11:51:13597
0
-
原创 基于UIScrollView控件实现的滑动引导页
在很多的app应用开发中,当第一次启动应用的时候都会来一个引导页,其效果如下图所示。 此处,我们使用UIScrollView来实现一个这样的效果,涉及的代码有。 WelcomeViewController.h#import <UIKit/UIKit.h> @interface WelcomeViewController : UIViewController @e...2018-06-11 22:12:36292
0
-
转载 iOS关键组件iBoot源代码泄露
昨天(2月7日),有匿名开发者在 GitHub 上传了 iOS 核心组件的源代码,这可能会促进黑客和安全研究人员找到 iOS 漏洞,并使 iPhone 陷入危险境地。git地址:https://github.com/h1x0rz3r0/iBoot。 不过,8日早上已经看不到相关的源码信息了,该项目已经转为Private,相关信息可以查看下面的链接: https://github.com/g...2018-02-08 22:18:391650
0
-
转载 IOS开发之逆向分析
首先,本逆向分析是系列文章,会分别从常见的逆向技巧来介绍iOS开发中常见的逆向技术。网络分析在逆向过程中很多时候需要分析APP和Web端数据交互的内容那么最简单的方式即是抓包网络分析,而使用Charles、Tcpdump也是逆袭分析最基本的手段。本文以Charles为例来介绍网络相关的内容。Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务2018-02-01 20:23:143829
0
-
原创 iOS WebDriverAgent 环境搭建
WebDriverAgent简介WebDriverAgent是Facebook 在去年的 SeleniumConf 大会上推出了一款新的iOS移动测试框架。当时的推文申明,还只支持模拟器,不过在今年4月更新的版本中,官方宣称支持真机测试了,大家可以查看官方github 的介绍:https://github.com/facebook/WebDriverAgent下面摘录一段官方对于WebDriverA2017-12-31 21:35:032716
2
-
原创 使用多个Target去管理项目版本环境
在实际开发中,为了保证所开发的产品能够尽量完美上线,在上线前会特意测试几轮,保证所开发的应用没有问题。据此,在实际的开发过程中,往往需要区分测试环境和线上环境,在Android开发中,可以通过gradle脚本来识别,并在代码中体现出来。 在ios开发中,如果一个包需要同时包含debug和线上的relase环境,则需要打两个.a文件,然后合并在一起。除了上述情况之外,有一些App还分为专业版与普通版2017-11-28 14:53:421394
0
-
原创 解决低版本Xcode不支持高版本iOS真机调试的问题
今天在做真机调试的时候,遇到下面的一个问题: Could not locate device support files. This iPhone 6s is running iOS 11.1 (15B93), which may not be supported by this version of Xcode.上面的意思是,在调试前我将我手机的iOS系统 升级到了最新版11.1版本,而我的2017-10-26 23:40:0621029
3
-
原创 iOS入门之打包静态库
在项目开发中,或多或少的都会使用第三方库,有时候也会将自己项目中独立于业务的相关代码打包成库以供别人使用。在Android开发中,一般打包为aar或者jar文件以供第三方使用。iOS开发中,则可以直接打包为.a文件,iOS内置了Static Library的模板,所以使用上也是十分的方便。 在正式讲解打包.a静态库之前,首先来看一些概念:什么是库?所谓库就是程序代码的集合,是共享程序代码的一种方式2017-09-09 13:56:051748
0
-
原创 iOS开发证书管理
最近,没啥事情,就逛逛论坛,研究一些新技术,偶尔导入github上一些开源的iOS项目学习学习别人的一些写法。不过有时间,在运行别人的项目的时候,总会报一些错误,有些是语法上的错误,老的代码在新的编译环境下不通过,还有的因为因为签名导致的错误,如常见的错误提示:“Failed to create provisioning profile.”,ios的证书管理是ios开发中必须掌握的技能,本文先简单的2017-09-07 23:28:365054
0
-
原创 iOS开发技巧篇
在iOS开发中,有一些技巧可以提高程序猿的开发效率。1,Xcode真机调试Xcode 7推出之前,想要真机调试,iOS开发者必须花$99购买苹果开发者账号,而且步骤繁琐,需要下载证书认证。随着苹果公司推出了Xcode 7之后,大幅度的简化了真机调试的步骤。但是如果要测试推送等,还是需要证书的。第一步:准备Mac电脑,Apple ID, iPhone手机,Xcode 集成开发环境; 第二步:打开X2017-09-05 10:24:26776
0
-
原创 iOS AutoLayout全解
AutoLayout简介Autolayout是一种全新的布局技术,专门用来布局UI界面的,用来取代Frame布局在遇见屏幕尺寸多重多样的问题。Autolayout自iOS 6开始引入,但是由于Xcode 4的不给力,当时并没有得到大规模推广。在iOS 7(Xcode5)开始,Autolayout的开发效率得到很大的提升,苹果官方也推荐开发者尽量使用Autolayout来布局UI界面,减少纯代码的方式2017-09-04 11:28:433909
0
-
原创 ARKit 简介
ARKit 简介苹果在AR一直布局VR,最近的苹果开发者大会上,果家终于放出大招:iOS移动端ARKit平台以及VR兼容新桌面操作系统macOS High Sierra。 增强现实(AugmentedReality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。说起AR,其实它并不是第一次出现,不管在国内还是国外2017-09-01 11:00:483015
0
-
原创 iOS自动布局框架之Masonry
目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的。而且有很多比较老的项目,本身就还在采用纯代码的方式进行开发。而现在iPhone和iPad屏幕尺寸越来越多,虽然开发者只需要根据屏幕点进行开发,而不需要基于像素点进行UI开发。但如果在项目中根据不同屏幕尺寸进行各种判断,写死坐标的话,这样开发起2017-08-26 11:25:192747
3
-
原创 iOS开发入门笔记
iOS开发入门笔记本文面向已有其它语言(如Java,C,PHP,Javascript)编程经验的iOS开发初学者,初衷在于让我的同事一小时内了解如何开始开发iOS App,学习目标包括:能使用Xcode IDE、模拟器能修改、调试已有iOS App能在已有应用内创建新模块能创建新应用能发布应用到App Store本文不包含任何高级的iOS开发知识,已学会iOS开发的同学不要看,看完这篇文2017-08-21 13:52:423830
2
-
原创 Swift 4.0 新特性
WWDC 2017 带来了很多惊喜,在这次大会上,Swift 4 也伴随着 Xcode 9 测试版来到了我们的面前,虽然正式版要8月底9月初才会公布,但很多强大的新特性正吸引我们去学习它。根据大会上已经开放的新特性,先一睹为快。体验Swift 4包含在Xcode 9中,您可以从Apple的开发者门户下载最新版本的Xcode 9(您必须拥有一个活跃的开发者帐户)。 每个Xcode测试版将在发布时捆绑最2017-08-15 11:23:183083
0
-
原创 iOS如何实现多个环境一次打包
概述偶然看到一个很有趣的问题:如何在ios环境下实现多个环境同时打包。谈到多环境,我想大多公司都至少有2-3个环境,比如Test环境,UAT(User Acceptance Test)用户验收测试环境,Release环境等等。当需要开发打多个包的时候,一般常见做法就是直接代码里面修改环境变量,改完之后Archive一下就打包了。或者在App中内置一个切换的按钮,实现环境的切换。或者,你们公司已经搭建2017-07-17 10:26:344407
0
-
原创 iOS之Runtime原理解读
Runtime简介做过Android开发的同学都知道,早期的Android系统采用的是Dalvik机制,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,大大的降低了app的运行效率。在Android 5.0系统之后,系统采用了ART机制,应用在第一次安装的时候,字节码就会预先编译成机器码,以后每次运行速度大大的提高了。OC是一门动态语言,所以它总是想办法把一些决定工作从编译推迟到运行时,2017-06-12 22:03:472861
0
-
原创 CocoaPods使用详解
CocoaPods简介什么是CocoaPods?每种语言发展到一个阶段,就会出现相应的依赖管理工具。好比Java 语言的 Maven,nodejs 的 npm,Android的grandle。而对于ios平台来说,CocoaPods是ios开发平台一个非常流行的第三方库管理工具。在开发过程中,根据项目复杂程度,通常我们会需要外链很多的第三方库。而添加这些第三方库的过程有时候会变成一场灾难。因此使用C2017-06-01 22:51:301889
0
-
原创 iOS动画总结
在iOS开发中,动画是提高用户体验重要的环节之一。一个设计严谨、精细的动画效果能给用户耳目一新的效果,这对于app而言是非常重要的。简介iOS动画主要是指Core Animation框架。官方使用文档地址为:Core Animation Guide。Core Animation是iOS和macOS平台上负责图形渲染与动画的基础框架。Core Animation可以作用与动画视图或者其他可视元素,为你2017-05-25 22:00:451252
0
-
原创 iOS 本地轻量级数据存储之NSUserDefaults
NSUserDefaults简介在Android和ios都提供了本地轻量级数据存储,底层实现都是基于key-value的方式。Android里面的叫SharedPreferences,ios的叫NSUserDefaults,使用上也是非常的简单。我们先看一看NSUserDefaults的API。#import <Foundation/NSObject.h>@class NSArray<ObjectT2017-05-24 08:33:461334
0
-
原创 UITabBarController实现Tab切换
在很多的应用中,基本都是使用Tab方式进行模块间的切换。在Android中很多控件可以实现这类效果,TabLayout、TabHost… 而在iOS中系统为我们提供了UITabBarController类来实现Tab页面之间的切换。有几个页面我们就创建几个UINavigationController,然后通过tabbar.viewControllers = @[navi1, navi2, navi2017-05-11 09:18:103322
0
-
原创 IOS WebView控件详解
概述WebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebView和WKWebView,UIWebView是iOS2之后开始使用,WKWebView是在iOS8开始使用,WKWebView将逐步取代笨重的UIWebView。相比UIWebView,WKWebView做了如下优化:WKWebView更多的支持HTML5的特性WKWebView更快,占用内存可能只有UI2017-05-06 21:08:2111994
1
-
原创 ios入门之界面基础
学习移动app开发,我们常常从讲解基本的控件开始,如UILabel、UISearchBar、UIButton、UITextField等等。在实现一个简单的ios 应用之前,我们首先来看ios开发中一些基本的概念。视图控制器(View Controllers)视图控制器是MVC(Modl-View-Controller)模式的逻辑部分。按照字面意思,这个控制器能够控制某个视图。UIViewContro2017-04-10 21:57:122194
0
-
原创 ios入门之消息推送
前言在去年的苹果大会上,苹果带来的iOS 10 系统中将之前繁杂的推送通知统一成UserNotifications.framework 来集中管理和使用通知功能,还增加一些实用的功能——撤回单条通知、更新已展示通知、中途修改通知内容、在通知中显示多媒体资源、自定义UI等功能。 那么在ios10之前,ios的消息推送是怎么分类的呢?ios 10之前在ios之前,iOS推送分为Local Notifi2017-03-11 09:48:591434
0
-
原创 IOS入门之StoryBoard
概述在iOS的发展历程中,IOS开发经历了三种主要流派:使用代码手写UI及布局;使用单个xib文件组织viewController或者view;使用StoryBoard来通过单个或很少的几个文件构建全部UI。而在最近几年的开发中,苹果对 Storyboard 的开发力度也不断增强,添加了更多功能和特性,大大方便了界面的开发、适配以及提升代码性能。我们来看看三种方式的主要区别:手写页面和逻辑代码如果你2017-03-08 22:18:254588
0
-
原创 Swift 3.0介绍
概述我接触swift是从2.0开始,当时出于对ios的好奇,加上官方的大力推荐,于是扎入了ios的怀抱,从1.2发展到了今天的3.0.1,这期间由于Swift目前还在发展阶段并不能向下兼容,这也造成部分我们2.x开发的版本在新版本上运行的问题,不过基于最近基本版本改动比较小的原因吧,我觉得swift是为了ios的趋势。尽管对于开发人员来说Swift3.0的变化会令你的程序几乎处处报错,但是试想一下如2017-02-22 21:41:392135
2
-
原创 高仿ios斗鱼界面
前言过去的2016年是一个直播年,各大平台都相继接入了直播频道,电商,社交…更是火了一批做视频的,譬如喵播,映客,都斗鱼等直播平台。全民直播,一下子掀起了直播的技术潮,今天要聊聊如何实现一个ios的直播app。 首先来看最终的效果: 最近也是因为入门swift不久,在网上找了一个项目就开始模仿,本项目用到的第三方库: Alamofire KingfisherSwift3.0的蝶变swif2017-01-24 10:49:095505
0
-
原创 iOS 滚动视图的复用问题解决方案
LazyScroll是什么LazyScrollView 继承自ScrollView,目标是解决异构(与TableView的同构对比)滚动视图的复用回收问题。它可以支持跨View层的复用,用易用方式来生成一个高性能的滚动视图。为什么要用LazyScrollView我们在做首页的时候,往往展示的东西会很多,随着View数量逐渐膨胀,没有一套复用回收机制的ScrollView已经影响到性能了,迫切需要处理2016-12-27 20:28:3611356
0
-
原创 FLAnimatedImage -ios gif图片加载框架介绍
简介FLAnimatedImage 是 Flipboard 团队开发的在它们 App 中渲染 GIF 图片使用的库。 后来 Flipboard 将 FLAnimatedImage 开源出来供大家使用。本文章主要是介绍FLAnimatedImage框架的GIF动画加载和播放流程,旨在说明流程和主要细节点。ios原有加载缺陷分析大家知道在 iOS 中处理过 GIF 图片, 如果通过原生系统提供的能力,2016-12-24 15:14:406938
0
-
原创 iOS使用自签名证书实现HTTPS请求
概述在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求。 默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info.plist中添加NSAllowsArbitraryLoads设置绕过ATS(App Transport Security)的限制(否则须在应用审核时进行说明并很可能会被拒)。所以还未进行相应配2016-12-23 17:50:147452
1
-
转载 2017年校园招聘ios面试题
一.搜狐快站1.谈谈你做过的项目;2.项目中最有成就感的部分;3.倒计时如何实现?(NSTimer,还有其他的实现方式吗);4.UIButton的继承关系?5.iOS中可以进行输入的控件?(UITextView,UITextField);6.快排的实现原理;7.短信验证码会有倒计时功能吗?第一次验证失败后还可以再进行验证吗?8.Android开发和iOS开发的区别; 二.搜狐社交产品中心1.我们项2016-12-14 09:19:025942
0
-
原创 Xcode 8新功能介绍
概述Xcode 8正式版在9月13日已经推送给开发者下载,下载之后就出现了很多编译错误,之前的插件也不能用了,但是发现Xcode8把好多不错的插件功能整合到自身了,感觉这点也挺不错。 结合自己遇到的一些问题和网上的一些教程,今天整理下xcode 8的一些新老特性分享出来。创建工程更加人性化内置表情包(Sticker Packs)和iMessage应用类名提示从Xcode8beta1就支持类名提示了2016-12-12 16:19:333125
0
-
原创 ios开发之xcode环境介绍
作为一个刚入门ios开发的人来说,对于ios开发,对于xcode一切都是那么的陌生,那么我们如何开始我们的第一步呢?首先对开发的ide是必须要了解的,其实要对开发的语言要慢慢熟悉起来,今天我们先来熟悉下ios的开发ide--xcode。第一步 打开 Xcode ,点击红色框的部分,创建一个新工程。你也可以点击菜单里里的 File -> New -> Project,效果是一样的。 第二步 选择 12016-12-11 23:12:523506
0
-
翻译 Swift基础语法(常量变量、数据类型、元组、可选、断言)
本文来自Swift中文开发组,感谢翻译者的分享。本文将分几部分对Swift对ios的语法做讲解。本文为第一节,主要讲解基础语法。常量和变量常量和变量把一个名字(比如maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比如数字10或者字符串"Hello")关联起来。常量的值一旦设定就不能改变,而变量的值可以随意更改。声明常量和变量常量和变量必2016-11-14 19:07:521460
0