IOS

iOS自定义字体显示问题的完美解决方法

2019-03-06
前言 本篇文章讲的是在实际项目中碰到一款自定义字体在展示上出现问题,然后运用先进的苹果爸爸的工具来解决这个问题的故事. 下面话不多说了,来一起看看详细的介绍吧 1. 自定义字体出什么问题了? 设计师们的作品总是千变万化,为了成就他们,作为程序员的我们只好满足他们喽. 所以当设计师用到一款神奇的字体的时候,我是不会拒绝的,就像下面这个样子: 为了让大家能更好的看到这个问题,我把 label 设置了一个背景色,label 的 width 和 height 都等于50.现在,在 storyboard

iOS实现转场动画的3种方法示例

2019-03-05
什么是转场动画 在 NavigationController 里 push 或 pop 一个 View Controller,在 TabBarController 中切换到其他 View Controller,以 Modal 方式显示另外一个 View Controller,这些都是 View Controller Transition.在 storyboard 里,每个 View Controller 是一个 Scene,View Controller Transition 便是从一个 Sce

MAC系统下安装FFmpeg的图文教程

2019-03-04
前言: FFmpeg目前最牛逼的开源视频音频处理工具.本文主要给大家介绍了MAC系统安装FFmpeg的相关内容,话不多说,马上开始 准备: 如果你的本本应装上XCode最新的版本那就最好不过的了,如果不是最新的版本,得先上App Store更新(安装一系列的操作需要用到,可减少耗时),如果没有安装XCode的话,建议还是别玩MAC系统了 先安装Homebrew (官方网址:https://brew.sh/) 命令行直接运行给出的命令即可(官网上最显著的命令): /usr/bin/ruby -e

一道值得深入思考的iOS面试题详解

2019-02-27
前言 最近在群里看到有人发的一道面试题,题目如下: @interface Spark : NSObject @property(nonatomic,copy) NSString *name; @end @implementation Spark - (void)speak { NSLog(@"My name is:%@",self.name); } @end @implementation ViewController - (void)viewDidLoad { [super view

iOS Runtime详解(新手也看得懂)

2019-02-27
前言 Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发,具体怎么实现的呢.我们从下面几个方面探寻Runtime的实现机制. Runtime介绍 Runtime消息传递 Runtime消息转发 Runtime应用 Runtime介绍 Objective-C 扩展了 C 语言,并加入了面向对象特性和 Smalltalk 式的消息传递机制.而这个扩展的核心是一个用 C 和 编译语言 写的 Runtime 库.它是 Objective-C 面向对象和动态机制的基石.

iOS实现数字倍数动画效果

2019-02-26
前言 一个简单的利用 透明度和 缩放 实现的 数字倍数动画 效果图: 实现思路 上代码 看比较清晰 // 数字跳动动画 - (void)labelDanceAnimation:(NSTimeInterval)duration { //透明度 CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; opacityAnimation.duration = 0.4 * d

iOS组件化开发实战记录

2019-02-25
1. 组件化需求来源 起初的这个项目,App只有一条产品线,代码逻辑相对比较清晰,后期随着公司业务的迅速发展,现在App里面承载了大概五六条产品线,每个产品线的流程有部分是一样的,也有部分是不一样的,这就需要做各种各样的判断及定制化需求.大概做了一年多后,出现了不同产品线提过来的需求,开发人员都需要在主工程中开发,但是开发人员开发的是不同的产品线,也得将整个工程跑起来,代码管理.并行开发效率.分支管理.上线时间明显有所限制.大概就在去年底,我们的领导提出了这个问题,希望作成组件化,将代码重构拆分

iOS实现支付宝蚂蚁森林随机按钮及抖动效果

2019-02-24
工作中遇到了一个需求 要做一个类似于蚂蚁森林的 在一定范围内随机出现 不相交且有上下抖动的控件 做完的图 如下 WechatIMG3.jpeg 这个需求在做的时候 需要注意几个地方 1.按钮随机且不相交 2.动画效果(核心动画) 3.需要监听点击事件和全部领取事件(全部领取完后会刷新接口) OK开始搞 随机按钮是其中最主要的两个点之一(上面的1和2) 在做的时候 需要注意范围 随机出现的控件 必须保证出现在上图的范围之内 那么随机x轴坐标和y轴坐标时 就需要注意 1.取值范围 Button的mi

iOS自定义UIBarButtonItem的target和action示例代码

2019-02-20
需求描述: 在项目开发过程中,遇到一种情况,需要自定义UIBarButtonItem,来实现分享样式,并在iPad中弹出系统分享框(UIActivityViewController),系统分享框需要指定显示位置(barButtonItem).而自定义的UIBarButtonItem target指向的是UIButton.这与需求不符,需自定义UIBarButtonItem. 在介绍自定义UIBarButtonItem前,先介绍一下相关控件的子父类关系(也可以说继承关系). 1.UIBarItem

iOS如何改变UIBarButtonItem的大小详解

2019-02-17
前言 基本上每个iOS APP里面都有导航,比如微信.QQ.支付宝.导航可以很方便地帮助我们管理视图控制器(UIViewController).导航的重要性不言而喻,基本上是每一位iOS初学者都要接触到的问题. iOS系统导航栏中有leftBarButtonItem和rightBarButtonItem,我们可以根据自己的需求来自定义这两个UIBarButtonItem. 本文主要介绍的是关于iOS改变UIBarButtonItem大小的相关内容,下面话不多说了,来一起看看详细的介绍吧 实现方法

iOS开发教程之APP内部切换语言的实现方法

2019-02-13
前言 相信大家在iOS开发中都遇到了一个问题,随着APP越来越完善,很多APP都做了国际化,也实现了APP内部切换语言.那么如何实现的呢?下面来一起看看详细的介绍吧 原理 国际化都会走到NSBundle的- (NSString *)localizedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName方法,使用自定义Bundle替换NSBundle,通过

iOS实现换肤功能的简单处理框架(附源码)

2019-02-13
前言 换肤功能是在APP开发过程中遇到的比较多的场景,为了提供更好的用户体验,许多APP会为用户提供切换主题的功能.主题颜色管理涉及到的的步骤有 颜色配置 使用颜色 UI元素动态变更的能力 动态修改配置 主题包管理 如何实施 优化 效果如下: DEMO代码:https://gitee.com/dhar/iosdemos/tree/master/YTThemeManagerDemo 颜色配置 因为涉及到多种配置,所以以代码的方式定义颜色实践和维护的难度是比较高的,一种合适的方案是--颜色的配置是通

iOS使用UIKeyInput自定义密码输入框的方法示例

2019-02-13
前言 开发中很多地方都会遇到密码输入,这时候往往需要根据UI设计自定义.这里遵守UIKeyInput,实现协议中的方法,让自定义View可以进行文字输入:再通过func draw(_ rect: CGRect)绘制现自定义UI:使用配置类来统一接口:使用代理来管理各种输入相关的事件.文章末尾有提供OC和Swift双语的CLDemo下载,这里讲解就使用Swift. 1.遵守UIKeyInput协议,实现文字输入 遵守UIKeyInput协议,实现协议中- (BOOL)hasText. - (voi

iOS自定义PageControl的方法示例

2019-01-31
前言 本文主要给大家介绍了关于iOS自定义PageControl的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 自定义PageControl 我们经常会用到PageControl,但是系统的PageControl只有一种样式,不支持多样化,这里简单介绍一个简单的自定义PageControl. 主要功能: 可以自定义间隙 可以自定义高度 可以自定义选中点的宽度 每个点有点击事件 可以自定义选中和非选中的图片 可以设置居左.居中.居右样式 支持长条形状 实现: 将自定义P

iOS如何获取汉字(简体中文)笔画数详解

2019-01-31
思路 1.汉字字典库匹配笔画数 优点: 实现逻辑简单,字典库好扩展 缺点: 内存消耗较大(不过也能承担) 思路: 这种实现思路是比较简单的,具体思路是将简体汉字所有字都穷举出来,然后分别匹配上指定的笔画数,当做一个大的数据库,每次都去查询一下. 2.汉字GBK编码匹配笔画数 优点:相比字典库匹配,效率高,速度快 缺点:添加编码库不好添加,不好扩展 思路: 这种实现方案是需要获取GBK编码分别对应的笔画数,放到指定数组(数据库)中,每次通过输入的汉字 转码为二进制,通过二进制的值 匹配数据库中的笔

iOS webview捕获H5按钮方法示例代码

2019-01-29
前言 本文主要给大家介绍了关于iOS webview捕获H5按钮的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下: 实现iOS webview捕获使用H5中按钮的点击方法,可以使用JSContext. 1.在工程中Linked Frameworks and Libraries中加入JavaScriptCore.framework 2.在使用的地方#import <JavaScriptCore/JavaScriptCore.h> 3.实现webview的代理方

iOS实现百度地图定位签到功能

2019-01-27
写在前面: 项目需求用到这个功能,主要目的是实现老师设置位置签到范围,学生在一定范围内进行签到的功能. 功能如下方截图: 屏幕快照 2019-01-28 上午10.29.26.png 简要介绍: 下面记录一下主要的实现流程,功能的实现主要是根据百度地图开发者官网提供的api文档,各项功能之间组合.百度地图的SDK现在分成了地图功能和定位功能两块不同的SDK,BaiduMapAPI这个是基础的地图功能,BMKLocationKit这个是定位功能.项目里实现定位签到功能用的的SDK包括上面说的这两个

iOS图片压缩、滤镜、剪切及渲染等详解

2019-01-26
前言 本文主要给大家介绍了关于iOS图片压缩.滤镜.剪切及渲染的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 主要内容: 1.图片基础知识的介绍 2.图片压缩 简单的回顾一下从相册获取一张图片 直接格式转换压缩:png.jpg.Context 重新绘制 3.图片处理 基于图片像素修改 图片剪切clip 渲染render 截屏 一.图片基础知识的介绍 一张图像是像素点的集合,每一个像素都是一个独立,有自己的颜色.图像一般情况下都存储成数组,可以说是二维数组.当成百上千万

简单说说iOS之WKWebView的用法小结

2019-01-26
WKWebView的优势 性能高,稳定性好,占用的内存比较小, 支持JS交互 支持HTML5 新特性 可以添加进度条(然并卵,不好用,还是习惯第三方的). 支持内建手势, 据说高达60fps的刷新频率(不卡) 1.Xcode新建My.html文件,自定义html内容,主要代码如下: (1)标签为UI样式(写了简单的JS代码,目的用于讲解交互) (2)onClick为JS事件,当JS想给OC传递参数时,采用如下代码:window.webkit.messageHandlers.<方法名>.post

ios基础教程之常见的数组使用方法

2019-01-25
一.数组的简单介绍 1.数组是一个对象,是任意类型对象地址的集合,OC的数组可以存储不同类型的对象 2.OC的数组只能存储对象,不能存放 简单的数据类型(int, float, NSInteger-)除非通过一些手段把简单数据类型变成对象.在C语言中的数组可以保存任意类型的数据. 3.存储的内存是连续的 二.不可变数组 0.定义数组 //定义一个空数组 NSArray *array1 = [NSArray array] ; array1 = @[];//空数组 //通过指定对象创建数组 arra