![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发这逻辑代码
WflytoC
我愿意默默地静下心让自己变得更高,更快,更强。
展开
-
Text Kit
YYTextDTCoreText出现在应用界面上的文本是NSString与NSAttributedString(字符与段落)。为了让NSString与NSAttributedString出现在界面上,可以将其绘制到图形上下文中,或者交给界面对象(UILabel、UITextField、UITextView,它们都有属性attributedText)来绘制。在底层,所有的文本绘制都是通过Core翻译 2016-03-27 20:07:17 · 648 阅读 · 0 评论 -
iOS开发中的那些尺寸
持续更新中———-1.TabBarItem中的图标大小2x:46x46 pixels3x:68x68 pixels原创 2015-10-08 14:49:52 · 616 阅读 · 0 评论 -
移动IM开发学习<4>
XMPP环境搭建之Openfire安装Openfire服务器 是基于java语言写的,也就是意味着你的电脑有java运行环境。Openfire官网Openfire指导文档Openfire是一个强大的实时通信和聊天服务器,实现了XMPP协议。这篇文档将会指导你安装Openfire。(只翻译Unix和Linux)先介绍一下RPM:RPM是Redhat Package Manager(软件包管理器)的缩写原创 2015-09-22 21:49:20 · 320 阅读 · 0 评论 -
移动IM开发学习<5>
遵守XMPP的客户端Mac中的”信息”也是遵守XMPP协议的: 一.那么如何在Mac下的信息中添加帐户呢:1.首先在Openfire的管理控制台中添加用户: 2.在Mac信息中添加刚才添加的账户:<1>”信息”—”添加帐号”:<2>其他信息账号: 其中的账号名称中的”@”符号后面的服务器器名也可以写成IP地址。<3>添加相关信息:<4>配置成功:二.如何为自己的电脑配置域名(Ubuntu)修改原创 2015-09-22 23:53:40 · 363 阅读 · 0 评论 -
移动IM开发学习<3>
XMPP环境搭建(在Ubuntu系统上):一.安装MySQL打开终端:安装客户端:sudo apt-get install mysql-client-5.5安装服务器:sudo apt-get install mysql-server,在安装过程中会让你输入数据库密码二.远程访问MySQL数据库:MySQL远程访问的命令:格式: mysql -h主机地址 -u用户名 -p用户密码$ mysql原创 2015-09-22 14:49:16 · 313 阅读 · 0 评论 -
移动IM开发学习<1>
一.通讯方式IM通讯方式有两种选择:设备直连(P2P)和通过服务器中转。1.P2PP2P多见于局域网内聊天工具,典型的应用有:飞鸽传书,天网Maze等。这类软件在启动后一般做两件事情:进行UDP广播:发送自己信息和接受同局域网内其他端信息开启TCP监听:等待其他端进行连接这种方式在有种种限制和不便:一方面它只适合在线的点对点消息传输,而对离线,群组等业务支持不够。另一方面由于 NAT(网络地址转载 2015-09-21 22:46:39 · 350 阅读 · 0 评论 -
UIStackView学习
本篇文章的开始我们将涵盖一些iOS9的很酷的新特性。对于开发者来说堆栈视图(UIStackView)的引入值得一提。我知道对于一些开发者来说使用autolayout设计一些复杂的交互界面是比较困难的。UIStackView正好能帮助到并让我们的开发者的工作变得更容易些。UIStackView提供了一个高效的接口用于平铺一行或一列的视图组合。对于嵌入到StackView的视图,你不用再添加自动布局的约转载 2015-09-21 13:51:14 · 401 阅读 · 0 评论 -
移动IM开发学习<2>
一.XMPP介绍:1.XMPP是基于XML的协议,用于及时消息(IM)以及在线现场探测。最初,XMPP作为一个框架开发,目标是支持企业环境内的及时消息传递和联机状态应用程序。2.XMPP前身是Jabber,是一个开源组织定义的网络及时通信协议。3.XMPP:The Extensible Messaging and Presence Protocol (可扩展通信和表示协议)二.及时通信软件(XMPP原创 2015-09-22 00:16:20 · 310 阅读 · 0 评论 -
CoreText<1>
整理自:基于 CoreText 的排版引擎 - 一.CoreText 简介CoreText 是用于处理文字和字体的底层技术。它直接和 Core Graphics(又被称为 Quartz)打交道。Quartz 是一个 2D 图形渲染引擎,能够处理 OSX 和 iOS 中的图形显示。Quartz 能够直接处理字体(font)和字形(glyphs),将文字渲染到界面上,它是基础库中唯一能够处理字形的转载 2015-09-21 22:20:27 · 339 阅读 · 0 评论 -
iOS中Bitcode的介绍及配置
今天在一个iOS培训网站上看到一篇关于第三方库不包含bitcode就会报错的文章,感觉剖析得很详细,分享出来,希望可以对iOS初入门者有所帮助。下面我们就一起来看看吧。用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过。看了下问题,报的是以下错误:ld: ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/转载 2015-09-20 13:10:44 · 382 阅读 · 0 评论 -
iOS中的模糊效果
iOS中模糊效果是通过UIBlurEffect和UIVisualEffectView这两个类来实现的。其实UIVisualEffectView就是一个视图控件,你可以把它当作普通视图使用,那么它是如何产生模糊效果的呢?UIVisualEffectView将会遮盖在想要产生模糊效果的视图上面来产生效果。当然,UIVisualEffectView产生什么样的效果由UIBlurEffect类决定,它可以设原创 2015-09-20 10:16:54 · 480 阅读 · 0 评论 -
iOS 随机数的产生
iphone有几个内嵌的随机数发生器,如rand()、random()、arc4random() 其精确程度为arc4random() > random() > rand()可以由其原型进行推断int rand();long random();u_int32_t arc4random();rand()和random()在使用之前需要先初始化随机种子,即调用srandom(time(转载 2015-09-19 01:04:23 · 397 阅读 · 0 评论 -
NSTimer、CADisplayLink、GCD 三种定时器的用法
在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法。在这个时候,我们就需要用到定时器。在iOS中有很多方法完成定时器的任务,例如 NSTimer、CADisplayLink 和 GCD都可以。一、NSTimer创建方法 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:s转载 2015-09-18 23:55:16 · 580 阅读 · 0 评论 -
Xcode插件
古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!以下是搜集的一些有力的XCode插件。记住:插件安装好了之后,一定要重启Xcode才会有效果。1.Alcatraz,官方网址,官方给出的介绍是:意思是说Alcatraz是一个开源的Xcode包管理器,你可以帮助你发现和安装插件、模版和颜色,而不需要你手动克隆或拷贝文件。它作为Xcode的一部分来安装的。安装方法:原创 2015-09-24 00:14:46 · 325 阅读 · 0 评论 -
Xcode插件开发入门
详情请看这里Xcode提供了所有你创建一个App需要的功能。但是由于其不开源以及没有制作Xcode-Plugin相关的文档,在我们需要添加一些自己的想法和功能的时候变得缺乏灵活性。 但是我们可以通过一些非官方的手段来扩展我们自己的Xcode,并且分享给别人使用。一.Xcode Plug-in能做什么太多了,我们可以自动生成代码注释(VVDocumenter),我们可以在代码编辑器中直接显示我们初始化转载 2015-09-24 09:06:58 · 468 阅读 · 0 评论 -
iOS如何改变图片的尺寸?
+(UIImage *)image:(UIImage*)image byScalingToSize:(CGSize)targetSize { UIImage *sourceImage = image; UIImage *newImage = nil; UIGraphicsBeginImageContext(targetSize); CGRect thumbnailRect转载 2015-09-25 11:00:21 · 814 阅读 · 0 评论 -
iOS的3D Touch学习
3D Touch有三大模块:peek and pop类似于系统邮件、QQ这样的App,在消息列表页面按压某条邮件或会话,则会弹出这个邮件或会话的阅览,如果继续施加压力按压,则会弹出完整的邮件详情页面或会话对话框。Home Screen Quick Actions用力按压App图标,弹出App的快速入口,通过快速入口直接进入到想要的功能页面。通过主屏幕的应用Icon,我们可以用3D Touch转载 2016-02-27 20:41:34 · 481 阅读 · 0 评论 -
iOS将GIF转变为图片
import UIKitimport ImageIOclass Tools: NSObject { class func parseGIFDataToImageArray(data: NSData) -> [UIImage]{ var images: [UIImage] = [] let src = CGImageSourceCreateWithData(d原创 2016-03-07 15:01:11 · 1344 阅读 · 0 评论 -
iOS常用加密方法(AES、MD5、Base64)
一.AES加密NSData+AES.h代码#import <Foundation/Foundation.h>@interface NSData (AES)- (NSData *)AES256EncryptWithKey:(NSString *)key;- (NSData *)AES256DecryptWithKey:(NSString *)key; @endNSData+AES.m代码#转载 2016-03-05 00:56:14 · 721 阅读 · 0 评论 -
Image I/O编程指南
一、基本的Image I/O使用 Image I/O框架提供了不透明数据类型来读取图像数据和写图像数据到一个目的地(CGImageSourceRef和CGImageDestinationRef)。它支持很多图像格式,包括标准web格式、搞动态范围图像,和原始相机数据。Image I/O还有许多其他特性: 1)mac平台上的最快的图像解码和编码。 2)逐步加载图片的能力。 3)支持图像元数据。转载 2016-03-04 10:32:15 · 451 阅读 · 0 评论 -
iOS Drawing Performance
Instruments1.唤醒Instruments:记住要使用iOS真机测试Product菜单 -> Profile选项2.我们通常对Instruments的某些工具感兴趣:Time Profile:测量CPU用法Core Animation:调试各种类型的Core Animation性能问题GPU Driver:调试GPU性能问题3.Time Profile在右下角的面板中设置Separ翻译 2016-03-04 10:19:49 · 433 阅读 · 0 评论 -
Carthage的使用
Carthage是一个简单、去集中化的Cocoa依赖管理器,使用xcodebuild来编译出二进制库。它基本的工作流是这样的:创建一个 Cartfile,列出你想要在项目中使用的框架运行 Carthage,它能获取并建立你所列出的每个框架将 .framework 的二进制文件拖到你的 Xcode 项目应用中下面以Alamofire为例子讲解:为了将Alamofire集成到Xcode工程中,在原创 2016-01-29 15:38:43 · 387 阅读 · 0 评论 -
宏定义中的"#"和"##"符号
1.宏定义中字符串化操作符#:“#”的功能是将其后面的宏参数进行字符串化操作,意思就是对它所应用的宏变量通过替换后在其左右各加上一个双引号。例如#define WARN_IF(EXPR)do {if (EXPR)fprintf(stderr, "Warning: " #EXPR "\n");} while(0) WARN_IF(divider == 0); 将被解析为: do {if原创 2015-12-05 20:16:37 · 1130 阅读 · 0 评论 -
CGContextSaveGState与CGContextRestoreGState的作用
使用Quartz时涉及到一个图形上下文,其中图形上下文中包含一个图形状态堆栈。在Quartz创建图形上下文时,该堆栈是空的。CGContextSaveGState函数的作用是将当前图形状态推入堆栈。之后,您对图形状态所做的修改会影响随后的描画操作,但不影响存储在堆栈中的拷贝。在修改完成后,您可以通过CGContextRestoreGState函数把堆栈顶部的状态弹出,返回到之前的图形状态。这种推入和转载 2015-12-17 11:49:06 · 368 阅读 · 0 评论 -
非零环绕数规则和奇-偶规则(Non-Zero Winding Number Rule And Odd-even Rule)
在图形学中判断一个点是否在多边形内的方法:若多边形不是自相交的,那么可以简单的判断这个点在多边形内部还是外部;若多边形是自相交的,那么就需要根据非零环绕数规则和奇-偶规则判断。判断多边形是否是自相交的依据:多边形在平面内除顶点外是否还有其他公共点。内外部分的划分:不自交的多边形:多边形仅在顶点处连接,而在平面内没有其他公共点,此时可以直接划分内-外部分。自相交的多边形:多边形在平面内除顶点转载 2015-12-17 12:35:23 · 1533 阅读 · 0 评论 -
NSInvocation类的学习
IOS中有一个类型是SEL,它的作用很相似与函数指针,通过performSelector:withObject:函数可以直接调用这个消息。但是perform相关的这些函数,有一个局限性,其参数数量不能超过2个,否则要做很麻烦的处理,与之相对,NSInvocation也是一种消息调用的方法,并且它的参数没有限制。NSInvocation对象只能使用其类方法来初始化,不能使用alloc/init方法。它转载 2015-11-20 00:06:11 · 376 阅读 · 0 评论 -
iOS界面之间的传值
iOS实现页面间传值的方式:通过设置属性,实现页面间传值委托delegate方式通知notification方式block方式UserDefaults或者文件方式单例模式方式使用SharedApplication,定义一个变量来传递本篇教程中,有两个视图控制器,分别为ViewController和AnotherController,我们想把ViewController中UITextF原创 2015-10-13 16:50:32 · 623 阅读 · 0 评论 -
iOS中的协议(Protocol)与代理(Delegate)
一. 协议(protocol),就是使用(遵守)了这个协议后,必须按照协议规定的内容(方法)来处理事情,协议中要求的方法必须实现(@optional的方法除外)。protocol是一种语法,它提供了一个很方便的、实现delegate模式的机会。定义协议的格式:@protocol ClassBDelegate<NSObject>- (void)methodOne;@optional- (void)m转载 2015-10-13 17:08:37 · 350 阅读 · 0 评论 -
图形处理<1>
UIView和CALayer的区别:UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上原创 2015-09-18 16:00:31 · 445 阅读 · 0 评论 -
图形处理<2>
本章将会讲解iOS开发中的贝塞尔曲线:UIBezierPath一.基础知识使用UIBezierPath类可以创建基于矢量的路径。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状。UIBezierPath对象是CGPathRef数据类型的封装。path如果是基于矢量形状的,都用直线和曲线段去创建。我们使用直线段去创转载 2015-09-18 16:29:59 · 335 阅读 · 0 评论 -
UITableView与UITableViewCell的透明度
设置UITableViewCell的透明度:cell.backgroundColor = [UIColor clearColor]; cell.backgroundView=nil;准确来说,这样的设置是使UITableViewCell完全透明的。设置UITableView的透明度: self.tableView.backgroundView.alpha=0.9;不要设置UITabl原创 2015-10-08 20:00:46 · 546 阅读 · 0 评论 -
利用addChildViewController管理子视图控制器<2>
了解addChildViewController之后,我们就要开始Coding学习该知识点了。但是奇怪的是,我按照网上的博客教程Coding,发现老是出问题,在这里贴下代码:#import "ViewController.h"#import "SSone.h"#import "SStwo.h"@interface ViewController ()@property(nonatomic,stro原创 2015-09-26 19:51:43 · 363 阅读 · 0 评论 -
AutoLayout布局
传统布局思路:传统布局思路中,一个view在哪里有多大,那就写清楚它的坐标位置和宽高就定了,平时用CGRect和CGPoint这两种模型就足够了,而且它一定非常听你的话,写的是多少,它绝对就是多少。AutoLayout布局:囊括了传统frame布局思路,除了可以告诉view的坐标和宽高,它更提供了一种相对的概念。view相对于屏幕视图左边5点,右边10点,上面15点,下面20点,如果屏幕的长宽比例原创 2015-09-07 16:03:17 · 409 阅读 · 0 评论 -
iOS中键值监听KVO的学习
我们知道在WPF、Silverlight中都有一种双向绑定机制,如果数据模型修改了之后会立即反映到UI视图上,类似的还有如今比较流行的基于MVVM设计模式的前端框架,例如Knockout.js。其实在ObjC中原生就支持这种机制,它叫做Key Value Observing(简称KVO)。KVO其实是一种观察者模式,利用它可以很容易实现视图组件和数据模型的分离,当数据模型的属性值改变之后作为监听器的转载 2015-09-12 11:38:15 · 425 阅读 · 0 评论 -
断点与单步调试
先看看Xcode调试控制台上的一些命令按钮。lldb 常用命令 :po(print-object)+ 对象p(print)+ 基本数据类型 int之类bt 打印最后一次调用堆栈expr 动态修改变量1.运行时修改变量的值你以前怎么验证是不是某个变量的值导致整段程序不能正常工作?修改代码中的变量的值,然后cmd+r重新启动app?现在你不需要这么做了,只需要设置一个断点,当程序在这进入调试模转载 2015-09-26 21:56:47 · 7121 阅读 · 0 评论 -
浅谈LLDB调试器
随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器。它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。LLDB为Xcode提供了底层调试环境,其中包括内嵌在Xcode IDE中的位于调试区域的控制面板,在这里我们可以直接调用LLDB命令。在本文中,我们主要整理一下LLDB调试器提供给我们的调试命令,更详细的内容可以查看The LLDB D转载 2015-09-26 20:50:21 · 527 阅读 · 0 评论 -
利用addChildViewController管理子视图控制器<1>
苹果在iOS5中给UIViewController新增加的5方法以及一个属性:// 方法addChildViewController:removeFromParentViewController:transitionFromViewController:toViewController:duration:options:animations:completion:willMoveToPare转载 2015-09-26 18:51:25 · 3090 阅读 · 0 评论 -
iOS之学习系统提供的框架(库)和自己制作框架
一.基础知识1.库是程序代码的集合,是共享程序代码的一种方式2.根据源代码的公开情况,库可以分为两种类型:开源库:能看到具体实现,比如:SDWebImage、AFNetworking闭源库:不公开源代码,是经过编译后的二进制文件,看不到具体实现,分为两种:静态库和动态库3.静态库和动态库 静态库:.a和.framework 动态库:.dylib和.framework4.添加库的步骤: “原创 2015-09-10 20:57:41 · 374 阅读 · 0 评论 -
iOS中计算文本的宽高
利用系统提供的方法:- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context该函数返回一个CGRect类型的值:其中,x=0、y=0原创 2015-09-10 19:35:10 · 536 阅读 · 0 评论 -
IOS懒加载介绍
懒加载,又称为延迟加载,本质写的是其get方法。换句话说,就是在开发中,对于程序中的资源:在程序启动的时候不加载资源,只有在运行中需要资源时,再去加载这些资源。我们知道iOS设备的内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么就有可能会耗尽iOS设备的内存。这些资源例如大量数据,图片,音频等等注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化。使用懒原创 2015-09-10 17:21:43 · 359 阅读 · 0 评论