自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(241)
  • 资源 (7)
  • 收藏
  • 关注

原创 iOS 常用公共方法(二)

1、UITableView的Group样式下顶部空白处理//分组列表头部空白处理UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)];self.tableView.tableHeaderView = view;2、UITableView的plain样式下,取消区头停滞效果- (void)scrollViewD

2016-11-21 15:04:35 851

原创 键盘遮挡输入框的问题

iOS开发之时键盘通知之前处理这种问题,总是在触发输入框编辑事件键盘弹出的时候,将当前的View整体向上移动,结束编辑又整体向下移,耗时耗力效率低。1.在ViewController.m文件声明#import "ViewController.h"@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>@prope

2016-11-18 16:15:13 371

原创 iOS 8:一、tableView右滑显示选择

如何使用UITableViewRowAction实现右滑选择呢?1、在iOS8以前,我们实现tableview中滑动显示删除,置顶,更多等等的按钮时,都需要自己去实现,在iOS8中系统已经写好了,只要一个代理方法和一个类就行了;2、iOS8的协议对了一个方法,返回值是数组的tableview:editActionForRowAtIndexPath:方法,我们可以在方法内部写好几个按钮,然后放到数组中

2016-11-18 14:47:52 406

原创 iOS常用的一些类库

一、第三方插件1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github.com/jdg/MBProgressHUD 3:XML/HTML解析 地址:https://github.com/topfunky/hpple 4:有文字输入时,能根据键盘是否弹出来调整自身显

2016-11-18 11:32:17 400

原创 iOS开发中<null>的处理

在iOS开发过程中经常需要与服务器进行数据通讯,JSON就是一种常用的高效简洁的数据格式。问题:在项目中,一直遇到一个坑的问题,程序在获取某些数据之后莫名崩溃。原因是:由于服务器的数据库中有些字段为空,然后以JSON形式返回给客户端时就会出现这样的数据:repairs = “”这个数据类型不是nil 也不是 String。 解析成对象之后,如果直接向这个对象发送消息(eg:length,count

2016-11-17 16:31:13 1185

原创 第二章、Java基本语法

一、Java语言的基本组成Java语言主要由5种元素组成:标识符、关键字、直接量、运算符和分隔符。这5种元素有着不同的语法含义和组成规则,他们互相配合、共同完成Java的语意表达。1、标识符变量以及后面将要讲到的类和方法都需要一定的名称,这种名称就叫做标识符。什么是一个有效的标识符呢?在Java中,所有的标识符都必须以一个字母、下划线或美元符号$开头。后面可以包括字母、数字、下划线和美元符号。

2016-11-03 15:37:27 876

原创 第一章、Java语言快速入门

一、Java简介1、 Java的起源与发展Java是一种计算机程序语言,用来编写嵌入在Web网页中运行的Java Apple,也可以编写独立运行的Java Application,是当今十分流行的网络编程语言。2、 Java语言特点按照Java设计者的解释,Java是一个简单、面向对象、网络适用、解释型、健壮、安全、结构中立、可移植、高性能、多线程、动态的计算机程序语言。(1)、简单性(2)、面

2016-11-03 14:50:00 1208

原创 CoreText(七):图文混排

在一个UIView的子控件上实现图文混排显示,支持本地图片和网络图片的显示。CoreText从绘制纯文本到绘制图片,依然是使用NSAttributedString,只不过图片的实现方式是用一个空白字符作为在NSAttributedString中的占位符,然后设置代理,告诉CoreText给该占位字符留出一定的宽高。最后把图片绘制到预留的位置上。1、图片的代理方法:#pragma mark 图片代理

2016-10-11 12:31:40 1862 1

原创 CoreText(六):用户点击

1、添加手势- (void)configSettings{ //添加手势 UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)]; longPressGestu

2016-10-11 11:14:33 1406

原创 CoreText(五):省略号

直接附代码:#import "MyView.h"#import <CoreText/CoreText.h>// 行距const CGFloat kGlobalLineLeading = 5.0;// 在15字体下,比值小于这个计算出来的高度会导致emoji显示不全const CGFloat kPerLineRatio = 1.4;@interface MyView()@property (n

2016-09-19 16:41:55 2442

原创 CoreText(四):行 CTLineRef

一、字符(Character)和字形(Glyphs)排版过程中一个重要的步骤就是从字符到字形的转换,字符表示信息本身,而字形是它的图形表现形式。字符一般就是指某种编码,如Unicode编码,而字形则是这些编码对应的图片。但是他们之间不是一一对应关系,同个字符的不同字体族,不同字体大小,不同字体样式都对应了不同的字形。而由于连写(Ligatures)的存在,多个字符也会存在对应一个字形的情况。

2016-09-08 18:14:21 4944 2

原创 CoreText(三):绘制文本

一、步骤获取上下文;翻转坐标系;创建NSAttributedString;根据NSAttributedString创建CTFramesetterRef;创建绘制区域CGPathRef;根据CTFramesetterRef和CGPathRef创建CTFrame;CTFrameDraw绘制。二、字符属性名称(1)、//字体形状属性 必须是CFNumberRef对象默认为0,非0则对应相

2016-08-31 17:54:06 2013

原创 CoreText(二):段落CTParagraphStyle

一、定义1、段落样式定义CTParagraphStyleSpecifiertypedef CF_ENUM(uint32_t, CTParagraphStyleSpecifier) { kCTParagraphStyleSpecifierAlignment = 0, //对齐属性 kCTParagraphStyleSpecifierFirstLi

2016-08-31 17:52:29 3148 1

原创 CoreText(一):基本用法

Core Text是和Core Graphics配合使用的,一般是在UIView的drawRect方法中的Graphics Context上进行绘制的。 且Core Text真正负责绘制的是文本部分,图片还是需要自己去手动绘制,所以你必须关注很多绘制的细节部分。一、CoreText框架CoreText 框架中最常用的几个类: (1)、CTFont (2)、CTFontCollection (3

2016-08-30 15:09:19 8808 1

原创 iOS7 edgesForExtendedLayout&automaticallyAdjustsScrollViewInsets

一、edgesForExtendedLayoutedgesForExtendedLayout是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。因为iOS7鼓励全屏布局,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。默认的布局将从navigation bar的

2016-08-26 16:31:56 908

原创 +load和+initialize

一、load初探1、介绍先看看 NSObject Class Reference 中关于 + (void)load 的说明:DiscussionThe load message is sent to classes and categories that are both dynamically loaded and statically linked, but only if the newly

2016-08-25 17:45:02 600

原创 iOS KVO

一、kvo概述kvo,全称Key-Value Observing,它提供了一种方法,当对象某个属性发生改变时,允许监听该属性值变化的对象可以接受到通知,然后通过kvo的方法响应一些操作。二、kvo实现原理kvo是如何实现通知对象的呢,其实这是通过Objective-C强大的runtime运行时机制实现的。当你第一次观察某个对象时,runtime会创建一个新的继承被监听类的子类。在这个新的类中,它会重

2016-08-25 10:53:12 3964

原创 第十一章:推送机制

本章将会详细介绍iOS本地通知和远程通知相关的知识。本地通知和远程推送通知都可以向不在前台运行的应用发送消息,他们在程序界面上的显示效果相同,都可能显示为一段警告信息或应用程序图标上的徽标。不管是本地通知还是远程推送通知,都可对用户进行提醒,提醒用户即将要做的事情,也可将服务器数据发送给iOS客户端。本地通知和推送通知的基本目的都是让应用程序能够通知用户某些事情,而且不需要应用程序在前台运行。一、使

2016-07-05 19:20:39 2438

原创 mac端抓包工具——Charles使用

一、简介Charles(http://www.charlesproxy.com/)是在Mac 下常用的截取网络封包的工具。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。Charles 是收费软件,可以免费试用30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30 分钟,并且启动时将会有10 秒

2016-06-29 17:07:57 21142

原创 如何使用Xcode的Targets来管理开发和生产版本的构建

原文:How to Use Xcode Targets to Manage Development and Production Builds 作者:EugeneTrapeznikov 译者:CocoaChina–skymoon(CC论坛ID)一、如何创建一个新的Target所以你如何在Xcode中创建一个开发的target?我使用示例项目“TargetDemo”引导您一步一步完成整个

2016-06-28 23:13:26 1276

原创 CocoaPods安装及使用

前言在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确地配置他们有时候是非常繁琐的事情,幸运的是CocoaPods是一个很好的解决方案。一、什么是CocoaPodsCocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码在Github上管理。该项目开始于2011年8月12日,在这两年多的时间里,它持续保持活跃更新。开发iOS项目不可避免...

2016-06-28 21:38:44 6176

原创 iOS 常用公共方法(一)

1、获取磁盘总空间大小//磁盘总大小+ (CGFloat)diskofAllSizeMBytes{ CGFloat size = 0.0; NSError* error; NSDictionary* dic = [[NSFileManager defaultManager]attributesOfFileSystemForPath:NSHomeDirectory() err

2016-06-28 11:12:28 2640 1

原创 iOS框架介绍

一、前言框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件。一个共享库定义的方法或函数可以被应用程序调用。iOS提供了很多你可以在应用程序里调用的框架。要使用一个框架,需要将它添加到你的项目中,你的项目才可以使用它。许多应用程序都使用了如Foundation、UIKit、和Core Graphics这些框架。根据你为应用程序选择的模版,相关的框架就已经被自动

2016-06-24 18:22:26 1471

原创 BlocksKit的使用

一、引言众所周知Block已被广泛用于iOS编程。它们通常被用作可并发执行的逻辑单元的封装,或者作为事件触发的回调。Block比传统回调函数有2点优势: 允许在调用点上下文书写执行逻辑,不用分离函数 Block可以使用local variables.基于以上种种优点Cocoa Touch越发支持Block式编程,这点从UIView的各种动画效果可用Block实现就可见一斑。而BlocksKit

2016-06-24 17:19:33 8542 1

原创 GitHub 上值得关注学习的 iOS 开源项目

作者:吴辉斌 链接:https://www.zhihu.com/question/22914651/answer/25089054一、ReactiveCocoaGitHub链接:ReactiveCocoa/ReactiveCocoaGitHub自家的函数式响应式编程范式的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之。二、Man

2016-06-24 11:35:59 641

原创 类别定义pop返回手势

.h#import <UIKit/UIKit.h>@interface UINavigationController (XYFullscreenPopGesture)@end@interface UIViewController (XYFullscreenPopGesture)/** * 是否隐藏导航栏 */@property (nonatomic, assign) BOOL xy_pre

2016-06-23 17:49:50 1129

原创 iOS开发大神必备的Xcode插件

作者:Mellong 原文链接:http://www.jianshu.com/p/ac8ac991d77b写在前面工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xcode插件,下面我就为大家介绍几款开发中比较常用的Xcode插件(此处应有掌声)。插件推荐1. AMAppExportToIPA

2016-06-23 17:27:40 1647

原创 Alcatraz的安装和使用

一、简单说明Alcatraz 是一款 Xcode的插件管理工具,可以用来管理XCode的 插件、模版以及颜色配置的工具。二、如何安装1.github地址https://github.com/alcatraz/Alcatraz2.安装方法方法一:在命令行中输入如下指令:curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/

2016-06-23 10:19:28 415

原创 第十章:使用MapKit开发地图服务

一、使用MapKit框架MapKit.framework使用MKMapView类代表地图控件,开发者只要在应用界面上添加并显示控件,该应用就可以增加地图。MapKitView类的常用属性如下:(1)、 @property (nonatomic) MKMapType mapType;用于设置和返回地图的类型。该属性支持如下typedef NS_ENUM(NSUInteger, MKMapType) {

2016-06-22 16:14:08 6161

原创 第九章:使用CoreLocation定位

CoreLocation框架(CoreLocation.framework)可用于定位设备当前的经纬度,通过该框架,应用程序可通过附近的蜂窝基站、WIFI信号或者GPS等信息计算用户位置。iOS SDK提供了CLLocationManager、CLLocationManagerDelegate来处理设备的定位信息,包括获取设备的方向以及进行方向检测等。其中CLLocationManager是整个Co

2016-06-21 14:10:25 7829

原创 第八章:iOS网络应用编程

一、检测网络状态当应用程序需要访问网络时,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理。最好能监听设备的网络状态的改变,当设备网络状态连接、断开时,程序也应该有相应的处理。1、检查网络状态检查设备的网络状态,需要如下两个步骤:①、下载、添加Reachability类;通过Xcode的帮助系统搜索Reachability,接下来下就可以在“Sam

2016-06-21 13:32:25 3704

原创 第七章:多线程

一、线程概述几乎所有的操作系统都支持同时运行过个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。1、线程和进程几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程(Process)。当一个程序进入内存运行后,即变成一个进程。进程是出于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分

2016-06-21 12:23:18 4368 2

原创 第六章:加速计与陀螺仪

iOS系统提供了加速计和陀螺仪支持,如果iOS设备提供了这些硬件支持,iOS即可通过CoreMotion框架提供的加速计来获取设备当前的加速度数据、陀螺仪数据、所处的磁场以及设备的方位等信息;对于iOS应用开发者来说,开发传感器应用十分简单,CoreMotion框架的核心API是CMMotionManager,开发者只要创建一个CMMotionManager对象,接下来即可采用定时器周期性地从CMM

2016-06-21 11:34:28 22091 3

原创 第五章:管理手机

一、使用AddressBook管理联系人当我们的应用也需要访问甚至修改设备里的联系人信息,就需要借助于ABAddressBook或ABAddressBookUI来管理联系人信息,其中ABAddressBook只提供了一些工具函数来访问、修改联系人信息,而ABAddressBookUI则直接提供了一些试图控制器来访问、修改联系人信息.除此之外,系统还内置了打电话、发短信、发邮件的应用,这些应用为iPh

2016-06-21 11:03:16 3671

原创 第四章:多媒体应用开发

一、音频和视频的播放1、使用System Sound Services播放音效< AudioToolbox/AudioToolbox.h >调使用System Sound Services播放音效这种方式是最简单、也是比较底层的音效播放服务,调用AudioServicesPlaySystemSound()这个函数播放一些简单的音频文件,但是只适合播放一些很小的提示或警告音频,它存在如下的限制:①、

2016-06-20 22:25:09 4101

原创 第三章:iOS的数据存储与IO

如果应用程序值需要保存程序参数、选项相关的少量数据,则可使用NSUserDefaults进行保存; 如果应用程序只是少量数据需要保存,那使用属性列表文件就可以了; 如果应用程序有大量数据需要存储、访问,就需要借助于数据库.iOS系统内置了SQLite数据库,SQLite数据库是一个真正轻量级的数据库,他没有后台进程,整个数据库就对应于一个文件,这样就可以非常方便的在不同设备之间移植.iOS为访问

2016-06-20 17:56:26 5046

原创 第二章:国际化

国际化是指应用程序运行时,可根据客户端请求来自个国家/地区、语言的不同而现实不同的界面.例如:如果请求来自于中文操作系统的客户端,则应用程序中的各种提示信息和帮助等都使用中文文字;如果客户端使用英文操作系统,则应用程序能自动识别,并做出英文的响应.国际化的英文单词是Internationalization,简称I18N,其中I是这个单词的第一个字母,18代表中间省略的字母个数,而N代表这个单次的最后

2016-06-20 16:26:11 893 1

原创 第一章:多点触摸与手势检测

一、响应者链只要继承了UIResponder的对象就可作为事件的响应者,实际上UIControl继承了UIView,UIView又继承了UIResponder,由此可见,所有的对象都可作为事件的响应者。当用户与某个控件交互时,该控件将作为“第一响应者(First Responder)”,第一响应者将作为响应者链的开始,该事件首先被发送给第一响应者(也就是用户触摸屏幕的控件)。事件将沿着响应者链一直向

2016-06-20 16:13:30 6159

原创 自定义系统pop跳转

前言苹果在IOS7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操作。一、自定义navigationController动画具体点这里二、使用runtime//Nav.h@interface Nav : UINavigationController@end//Nav.m@

2016-06-19 16:33:21 934

原创 iOS开发之drawRect的作用和调用机制

一、重绘机制iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写drawRect方法,在这里进行绘图操作,程序会自动调用此方法进行绘图。 重绘操作仍然在drawRect方法中完成,但是苹果不建议直接调用drawRect方法,当然如果你强直直接调用此方法,当然是没有效果的。苹果要求我们调用UIView类中

2016-06-06 11:33:02 19584

全国城市商圈经纬度MYSQL版

全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版

2024-05-08

全国城市商圈经纬度MYSQL版

全国城市商圈经纬度MYSQL版

2022-12-01

iOS-组件化管理.zip

iOS组件化管理

2022-01-04

设计原则(责任链,桥接,适配器,单例,命令)

设计原则(责任链,桥接,适配器,单例,命令) + 六大原则

2021-05-12

runtime 818.2

runtime 818.2版本

2021-04-28

RuntimeObject.zip

Objective-C Runtime是一个将C语言转化为面向对象语言的扩展。 我们将C++和Objective进行对比,虽然C++和Objective-C都是在C的基础上加入面向对象的特性扩充而成的程序设计语言,但二者实现的机制差异很大。C++是基于静态类型,而Objective-C是基于动态运行时类型。也就是说用C++编写的程序编译时就直接编译成了可令机器读懂的机器语言;用Objective-C编写的程序不能直接编译成可令机器读懂的机器语言,而是在程序运行的时候,通过Runtime把程序转为可令机器读懂的机器语言。Runtime是Objective不可缺少的重要一部分。

2020-09-04

RuntimeObject.zip

Objective-C Runtime是一个将C语言转化为面向对象语言的扩展。 我们将C++和Objective进行对比,虽然C++和Objective-C都是在C的基础上加入面向对象的特性扩充而成的程序设计语言,但二者实现的机制差异很大。C++是基于静态类型,而Objective-C是基于动态运行时类型。也就是说用C++编写的程序编译时就直接编译成了可令机器读懂的机器语言;用Objective-C编写的程序不能直接编译成可令机器读懂的机器语言,而是在程序运行的时候,通过Runtime把程序转为可令机器读懂的机器语言。Runtime是Objective不可缺少的重要一部分。

2020-09-04

iOS-KVC的实现

KVC全称是Key Value Coding(键值编码),是一个基于NSKeyValueCoding非正式协议实现的机制,它可以直接通过key值对对象的属性进行存取操作,而不需通过调用明确的存取方法。这样就可以在运行时动态在访问和修改对象的属性,而不是在编译时确定。

2020-08-28

iOS-KVO.zip

KVO全称是Key Value Observing,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。由于KVO的实现机制,只针对属性才会发生作用,一般继承自NSObject的对象都默认支持KVO。

2020-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除