自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CINNS的博客

Don't stop

  • 博客(57)
  • 收藏
  • 关注

原创 0行代码实现 UIView 圆角属性设置

上一篇文章讨论了在 XIB中为 UIView设置圆角属性,今天发现了另外一种为 UIView 快速设置圆角属性的方法.1.首先创建一个 UIView的 Category,拥有以下属性,并在实现文件中重写每个属性的 setter 与 getter 方法//* 边线颜色 */@property (nonatomic, strong) UIColor *borderColor;//* 边线宽度 */

2016-08-06 16:43:49 632

原创 XIB 设置UIView的圆角边框等属性

在开发中,经常会用到一些圆角效果,或者边框效果,经常用的方法是通过代码直接去设置,比较方便快捷; 但是当我们通过 XIB创建出一个控件后,也需要这样的一些圆角或边框效果,能不能直接通过 XIB里面的一些方法直接设置呢?答案是有的其主要设置的方式是通过在 XIB操作栏的User Defined Runtime Attributes中通过 KEY PATH去设置当前控件的属性,具体步骤如下图所示:

2016-07-30 01:23:20 15105

原创 如何让父UIView的透明度不影响Subview的透明度

转至:原文链接今天发现设置UIView设置alpha或者设置其layer的opacity时,其Subview的透明度也会跟着变。 解决方法如下:[[UIColor blackColor] colorWithAlphaComponent:0.5]

2016-07-09 14:49:49 611

原创 runtime 系列-2获取类的所有特征(属性,实例变量,方法)

在本文中,主要是通过 runtime 去过去对象的特性,比如属性,实例变量和方法等,其中主要使用到的runtime 函数是. 1).class_copyPropertyList—获取一个类的所有属性,如果没有属性count就为0 2).property_getName—获取属性名称 3).objc_property_t—接收class_copyPropertyList返回的属性地址指针 4)

2016-06-14 16:12:08 1325

原创 runtime 系列-1.动态添加类及类属性,并为类动态添加方法

本文主要是自己网上资料,根据上面的讲解的学习笔记.文章出处在动态添加类及属性这块,主要用的的 runtime函数是 1).objc_allocateClassPair—–通过这个函数,可以创建出一个类 2).class_addIvar—–为该类添加实例变量 3).sel_registerName—–注册一个 SEL方法 4).class_addMethod—–为创建的类动态添加方法 5)

2016-06-08 09:23:04 671

原创 xcode 中代码块存放位置

代码块位置~/Library/Developer/Xcode/UserData/CodeSnippets 终端中 open ~/Library/Developer/Xcode/UserData/CodeSnippets打开这个目录后,就可以将之前保存的代码块放在这个目录或者将自己的代码块拷贝出来到其他地方使用了

2016-05-06 18:58:08 2176

原创 Xcode打包脚本

最近发现了在工作中,发现了一个比较好用的Xcode打包脚本,打包速度比Xcode快很多,使用起来也非常方便. 项目地址:点击进入github 项目中的README上有很详细的使用方法,可以参考上面的,我目前只用到了基本的打包功能,具体步骤如下使用方法:配置好Xcode中的证书,发布证书或者打包证书在终端中进入Xcode项目目录,例如项目在~/iphone文件夹中,我们只需要进入这个目录即可,

2016-04-06 15:09:05 390

原创 CGAffineTransformMakeTranslation和CGAffineTransformTranslate

CGAffineTransformMakeTranslation : 每次都是以最初位置的中心点为参考CGAffineTransformTranslate 每次都是以传入的transform为参照(既 有叠加效果)这两个动画属性属于视图的平移属性,不会改变视图的大小,只会通过平移将视图的位置改变,是一种相对位置的改变,例如下代码:- (void)viewDidLoad { [super vi

2016-04-01 10:10:00 4084

原创 CAGradientLayer基本使用方法

Gradient:本身就是梯度的意思,所以在这里就是作为渐变色来理解 1,CAGradientLayer用于处理渐变色的层结构 2,CAGradientLayer的渐变色可以做隐式动画 3,大部分情况下,CAGradientLayer时和CAShapeLayer配合使用的。 4,CAGradientLayer可以用作PNG的遮罩效果关于CAGradientLayer的坐标系统 为什么要提到

2016-03-30 17:19:01 2281

转载 在iOS9中突破微信App跳转的限制

原文转载自:http://www.nero.today/index.php/2016/01/26/appswitchonwechatonios9/前言微信的普及程度相信不需要多言了,稍微回忆一下自己上一条短信是什么时候,上一条微信又是什么时候就知道了。 因此通过微信传播也是绝大部分App的一个重要手段,但是在iOS7微信出的新版本,就开始不允许从微信直接跳转到对应的App中了。 所谓上有政策,下

2016-03-15 14:57:28 12536

原创 Xcode官方直接下载地址(离线下载)

在下载Xcode的时候,一般都需要登录开发者账号,但是通过以下链接,可直接下载官方的Xcode;如:我下载7.2.1版本的Xcode地址为http://adcdownload.apple.com/Developer_Tools/Xcode_7.2.1/Xcode_7.2.1.dmg当需要下载别的版本的时候,只需要将版本号更换为对应的版本号即可 http://adcdownload.apple.co

2016-03-04 14:41:47 3913

原创 swift中创建一个单例

在swift中创建单例,相比在Objective-C更加的便宜,首先创建一个继承自NSbject的MyINstance类,实现的代码如下://在swift中,类方法中是不允许定义静态变量的,所以定义一个静态变量,应该写在方法外面static var once_t: dispatch_once_t = 0static var instance: MyInstance?//用来获取单例对象的方法,

2016-02-28 18:01:18 452

原创 Swift中定义protocol,定义optional方法

在swift中定义一个protocol相比objective-c来说,要更加简单,我们只需要通过一下方法就可以定义一个protocol:定义不包含optional方法的protocolprotocol XXXXXXDelegate : NSObjectProtocol { func XXXXXXX()//代理方法}在swift中,说有的Protocol都是继承自NSObjectProtoco

2016-02-23 20:18:55 2748

原创 使用NSClassFromString加载类

NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。正常来说,id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];和id myObj = [[MySpecialClass alloc] init];是一样的。但是,如果你的程序中并不存在MySpecialClass这个类,下

2016-02-22 11:14:24 655

原创 iOS 判断是否安装了某个APP(如新浪微博)

我在做iOS开发的时候,想要判断是否安装了某个APP,如我在做友盟第三方分享的时候,友盟提供了判断微信,QQ等应用是否安装的方法,但是我要要判断微博是否安装,如果安装,我才显示图标,没有安装,我 就隐藏图标,因此得到的方法如下: 通过一句代码即可判断:BOOL hasSinaWeibo = [[UIApplication sharedApplication] canOpenURL:[NSURL U

2016-02-19 10:55:10 9998 3

原创 添加gitignore的方法

1.在github上下载gitignore项目,地址为https://www.github.com/github/gitignore 2.终端中cd进入到项目目录 3.在下载到的gitignore文件夹中找到对应的语言,然后终端中通过cp XXXX.gitignore .gitignore将gitignore拷贝到项目中 4.git add .命令将该文件添加到git管理 5.提交到git仓

2016-02-17 22:27:27 723

转载 上传AppStore会碰到:Failed to locate or generate matching signing assets(Missing iOS Distribution signing)

原文转载自:http://www.jianshu.com/p/cda1790ea317从2月14号开始,上传AppStore时可能会碰到这个问题:Failed to locate or generate matching signing assets Xcode attempted to locate or generate matching signing assets and failed t

2016-02-16 20:17:09 637

原创 iOS应用跳转至app store 评分页

iOS7以后 iOS应用跳转到app store 评分的功能接口变了,网上资料大多都是iOS7以前的跳转方法,不过这个方法在iOS6和iOS7.1以后是可行的 [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewCont

2016-02-16 11:37:33 1293

原创 iOS获取设备UUID

在项目中写上以下代码,可以获取iOS设备的UUID UIDevice *device = [UIDevice currentDevice]; NSUUID *uuid = device.identifierForVendor; NSString *str = uuid.UUIDString; NSLog(@"UUIDString%@",str);

2016-01-29 18:54:39 399

原创 字符串定义和基本操作

字符串是一串有序字符的集合,在swift中,字符串用string类型来表示,也是字符类型的集合,兼容字符类型(character)和字符串类型(string),字符串链接可以用+号,字符串的更新和普通常量和变量那样操作,非常方便,每一个swift的string都是用Unicode的字符来存储,这样如果要在一个页面显示多国文字,很方便.字符串字面量,let时候,为不可变字符串,var为可变字符串let

2016-01-28 23:13:11 1058

原创 storyboard解析2

添加tableHeaderView和tableFooterVie是的,没有听错,不用代码,“拖”出header于footer,其实很简单,选中tablView,在控件中找到View拖到tableView上,往最上方拖动,知道看到左右有两个圈的时候松手,这个View就是tableHeaderView了,同理,往最下方拖,就是tableFooterViewLaunchScreen.storyboard从

2016-01-28 20:29:59 457

原创 storyboard解析

如何理解SB?最简单的理解就是:一个.storyboard文件相当于多个基于VC使用的.xib文件,由此我们可以看出,SB(只能基于VC,不能基于View),我们有多个VC的类是可以和一个SB文件建立关系的,使用方法:SecVC *secVC = [[UIStoryboard storyboardWithName:@"Demo" bundle:[NSBundle mainBundle]] insta

2016-01-28 20:11:56 878

原创 xib中使用auto layout

iPhone5使屏幕从3.5”增大到了4.0”,与之对应的iOS6也就引入了auto layout,auto layout是一个很重要的概念,是独立于xib的,但是auto layout从一开始就是与xib强绑定的,因为在xib里设置auto layout是最简单的。我们这里默认大家对auto layout有基本的了解,网上有好多专门讲auto layout的教程,而且大多都是基于xib的,大家可以

2016-01-28 19:31:31 1001

原创 iOS汉字字符串转拼音

有时候在开发中会遇到,需要通过拼音来进行排序,分类,但是服务器并没有返回带拼音的字符串,苹果为我们提供了对应的方法,来获取拼音 NSString *hanziText = @"我是中国人--重庆---长沙"; if ([hanziText length]) { NSMutableString *ms = [[NSMutableString alloc] initWith

2016-01-28 11:41:54 339

原创 19.选并操作符(空合运算符)

空值合并操作符,是对三元运算符在可选类型情况下的一种简化操作let 底线品牌 = "华为"var 理想品牌 : String?var 实际入手 = (理想品牌 ?? 底线品牌)//结果显示为华为,因为当前"理想品牌为nil"理想品牌 = "iPhone"实际入手 = (理想品牌 ?? 底线品牌)//结果显示为"iPhone",

2016-01-27 23:20:49 453

原创 18.逻辑运算符

逻辑非”!”,逻辑或”||”,逻辑与”&&” 逻辑非作用是讲true变为false,讲false变为true1.逻辑非let 请进 = falseif !请进 { print("请进")} else { print("不要进来")}2.逻辑与let 密码正确 = truelet 指纹正确 = falseif 密码正确 && 指纹正确 { print("进门成功"

2016-01-27 23:17:25 255

原创 17.闭区间和半开区间

闭区间,有一个起始和终止的范围,包含起始值和终止值,主要用途用在for-in循环for index in (1...5) {//闭区间 print("\(index) times 5 is \(index)")}//相当于定义一个变量i i>=1 && i <= 5.开区间,一般用在数组循环中,避免数组越界错误var 群主名单 = ["群主1","群主2","群主3","群主4"]va

2016-01-27 23:15:48 1452

原创 16.比较运算和三元条件

比较运算符一般用来比较两个变量大小相等的情况,分为 == , != ,> , < ,>= , <= , 其中 ===(特征等于运算符) 和!== (特征不等于运算符)let 欢迎信息 = "欢迎来我的blog"if 欢迎信息 == "欢迎来我的blog" { print("我很欢迎你!")} else { print("慢走不送啊...")}三元条件运算符,是swift中唯一的一

2016-01-27 23:12:13 266

原创 15.取正负和组合赋值

我们常常需要一个负的数,这时候需要用到”一元取负操作符”,比如:let san = 3let 负三 = -san//值为-3let 正三 = -负三 //值为3加法运算符let 取正 = +负三//值为-3+号的作用只是和-号在形式上的配对组合赋值var a = 1a += 3 //表达意思等于a = a + 3

2016-01-27 23:09:02 688

原创 14.浮点数取余和自增自减

在swift语言中,可以对浮点数进行取余操作,比如1024 % 3.5Int (1024 / 3.5) 292 * 3.5 + 2自增和自减,这种运算在循环中经常用到, var i = 0 ++i //等同于 i = i + 1 --i //等同于i = i - 1++ i 和 i++ 的区别 —>++i是把变量先+1再返回,i++是先使用i这个值,然后把i+1返回var 赞 = 0let

2016-01-27 23:05:33 1904

原创 iOS通过邮件获取APP异常崩溃信息

在AppDelegate.m文件中实现以下方法,程序在生产环境中,若发生崩溃,会提示用户发送邮件给开发者:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customizati

2016-01-27 21:04:09 460

原创 iOS实现APP调用打电话,发短信,发邮件,打开Safari

打电话:- (IBAction)phone:(id)sender { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];}打开Safari:- (IBAction)Safari:(id)sender { [[UIApplication sharedApplicat

2016-01-27 20:52:41 861

原创 xib、storyboard文件的使用

xib文件的使用1.基于UIViewController子类的xib的使用这种情况下使用很简单,对VC直接alloc,init就可以,VC会自动去找自己对应的xib文件,即使我们自定义了一些init方法,也不需要对加载他的xib做处理,系统会自动帮我们找是否有与其对应的xib文件,例如我们有这样一个初始化方法- (instancetype)initWithCustemData:(id)aData;我

2016-01-27 19:16:17 468

原创 13.基础操作符

操作符一共分为三种,unary,Binary,TernaryUnary:每次只操作一个目标,而且紧跟变量或者常量前面或者后面,没有空格(如:-a,i++),是一个一元操作符Binary:位于操作的2个对象中间,而且最好有空格分开(如:2+3),这样看得比较清楚,是二元操作符Ternary:用来表示逻辑判断(如:a ? b : c),三元操作符//赋值let b = 10var a = 5

2016-01-26 23:12:53 630

原创 12.断言Assert

尽管可以用optional来检查值存不存在,有时候在代码中,是需要一个值,或者能满足的值,程序才能运行,这时候需要assert来对程序进行调试,如:let 年龄 = 100assert(年龄 >= 18, "A person's age cannot be less than 18")assert(年龄 >= 0, "年龄必须是大于0的值")这里有一个情况,加入我的年龄为小于18的一个数,那么程序就

2016-01-26 23:09:24 392

原创 11.可选类型(间接拆包)

optional表示一个常量或者变量没有值的这种情况,我们用if语句来判断,用binding语句来访问它的值,有时候,一个程序中,一个optional一定是有值的,这时候我们就不需要用if语句来check它,我们几乎可以假定这个是一定有值的,这种类型叫做间接拆包,如:let 彩票 : String! = "5"//这样就不需要对他进行if判断和拆包工作,可以直接打印他的值print("此次彩票中奖

2016-01-26 23:05:48 349

原创 UITextView中禁止输入表情Emoji

在UITextView代理方法中调用以下2个方法- (void)textViewDidChange:(UITextView *)textView { if (![self isValidString:textView.text]) {//如果输入框中有表情 textView.text = [self disableEmoji:textView.text];//去掉输入框的表情

2016-01-26 15:12:00 780 2

原创 10.可选类型optional(解包和绑定)

当一个值可能是不存在的时候,就需要用到可选类型(optionals),optionals一种情况是值不存在,另外一种情况是他有一个值,这个值等于某一个X,例如:let possibleNumber = "123"let convertedNumber = Int(possibleNumber)//通过这个方法就直接转为整型print(convertedNumber)let 昨天我买的彩票 = "

2016-01-25 23:09:50 1232

原创 9.元组类型

一般,在swift语言中,如果我临时想把几种类型凑在一起,我们可能需要这个tuples(元组类型),通过”()”,之间用”,”隔开如let http404Error = (404,"Not Found")//又如let 昨天我网购的一件衬衫 = (70,"白色",true)//价格,颜色,是否合身//如果我要去访问元组里面的元素,通过重新定义一个元组变量,将上一个元组的值赋给新的元组,然后将值取出

2016-01-25 23:06:47 345

原创 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"

控制台输出如图是在我启动一个 Xcode 7 + iOS 9 的 App 之后,控制台的输出。这在 Xcode 6.4 + iOS 8 时,是不会有的情况,原因是【为了强制增强数据访问安全, iOS9 默认会把所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConn

2016-01-25 12:19:48 1382

空空如也

空空如也

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

TA关注的人

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