技巧
yyc_quietly
这个作者很懒,什么都没留下…
展开
-
使label字体上下偏移
需求:近日用到倒计时字体 :@"DBLCDTempBlack"大致看没啥问题,可是UI来找茬了,说字体向上偏移了一像素,需要向下挪回来;找了半天没发现label这样的功能,最后还是用 AttributedText 解决了用到属性 : NSBaselineOffsetAttributeName 可设置 上下偏移的距离(同时联想到,一个label如何设置大小不同,位置也不同原创 2017-03-14 15:42:10 · 5776 阅读 · 0 评论 -
设置table分割线靠左边0距离对齐
在viewDidload 加下面代码 if ([self.table respondsToSelector:@selector(setSeparatorInset:)]) { [self.table setSeparatorInset:UIEdgeInsetsZero]; } if ([self.table respon原创 2015-09-01 17:46:12 · 1170 阅读 · 0 评论 -
防止键盘弹出遮挡编辑窗
注册通知: //注册键盘出现通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (keyboardShow:) name: UIKeyboardDidShowNotification o原创 2015-09-01 17:53:46 · 325 阅读 · 0 评论 -
使用xib自定义一个view
今天项目中需要自定义的table区头和区脚,而又无法直接在IB中实现自定义的样式,所以创建了一个xib自定义的view 去实现,具体步骤为:首先创建view 类,无法携带xib模板然后单独创建一个view 的IB模板把calss 关联起来修改size类型,(为了自定义frame)给自定义的view添加类方法, #import "CustomV原创 2015-09-15 13:49:23 · 517 阅读 · 0 评论 -
iOS的文件分类、存放路径及文件属性
关键数据内容:用户创建的数据文件,无法在删除后自动重新创建,且会路径:主目录/Documents属性:不要设置"不备份"管理:iOS系统即时遇到存储空间不足的情况下,也不会清除,同时会备份到iTunes或iCloud中 缓存数据 内容:可用于离线环境,可被重复下载重复生成,即时在离线时缺失,应用本身也可以正常运行路径:主目录/Library转载 2015-09-15 14:00:14 · 894 阅读 · 0 评论 -
Xcode Build Search Paths设置
include include “” 引用工程目录的相对路径的头文件include 是编译指令,在编译时,编译器会将相对路径替换成绝对路径,因此,头文件绝对路径=搜索路径+相对路径。Xcode Build Settings 下 Search Paths设置搜索路径Header Search Paths:头文件搜索路径设置$(SRCROOT)宏和$(PROJECT_D转载 2015-09-22 10:29:39 · 423 阅读 · 0 评论 -
iOS上如何让按钮文本左对齐问题
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 这行代码,把按钮的内容(控件)的对齐方式修改为水平左对齐,但是这们会紧紧靠着左边,不好看,所以我们还可以修改属性:button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0原创 2015-09-28 13:34:55 · 258 阅读 · 0 评论 -
在UIView中绘制直线、矩形、三角形
直线1234567891011121314151617181920- (void)drawRect:(CGRect)rect { //获得处理的上下文 CG转载 2015-10-14 16:05:19 · 1212 阅读 · 0 评论 -
动态隐藏导航栏
- (void) hiddenNavBar:(BOOL)hidden{ if (hidden) { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; [UIView animateWithDuration:0.原创 2015-10-21 10:22:22 · 442 阅读 · 0 评论 -
获得设备型号
#include //获得设备型号- (NSString *)getCurrentDeviceModel{ int mib[2]; size_t len; char *machine; mib[0] = CTL_HW; mib[1] = HW_MACHINE; sysctl(mib, 2, NULL, &len, NULL,原创 2015-10-23 16:26:57 · 316 阅读 · 0 评论 -
屏幕截图,后台音频播放
截取屏幕图片//创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400)UIGraphicsBeginImageContext(CGSizeMake(200,400)); //renderInContext 呈现接受者及其子范围到指定的上下文[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]转载 2015-08-19 21:35:49 · 414 阅读 · 0 评论 -
NSString 不常用部分
--常用的替换符-------------- %@ NSString实例 %d,%D,%i 整数 %u,%U 无符号整数 %x 将无符号整数以十六进制小写字母显示 %X 将无符号整数以十六进制大写字母显示 %f 小数 %c 字符 %s C语言字符串 %% 显示%字符本身 --NSRange的定义 ---typedef struct _NSRange原创 2015-08-19 17:57:53 · 281 阅读 · 0 评论 -
单例
单例必须是唯一的,所以它才被称为单例。在一个应用程序的生命周期里,有且只有一个实例存在。单例的存在给我们提供了一个唯一的全局状态。比如我们熟悉的NSNotification,UIApplication和NSUserDefaults都是单例。为了保持一个单例的唯一性,单例的构造器必须是私有的。这防止其他对象也能创建出单例类的实例。感谢所有帮我指出这点的人。为了确保单例在应用程序的整个生命周期是唯一的原创 2015-08-19 15:22:54 · 321 阅读 · 0 评论 -
git命令行学习小结
git reset 回退版本命令上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。git reset HEAD git reflog 记录每一次命令git diff 比较原创 2017-01-05 17:22:39 · 256 阅读 · 0 评论 -
iOS相册权限、相机权限、麦克风权限
相册权限iOS8之后加入了PhotoKit,使用需要 #import 权限类型typedef NS_ENUM(NSInteger, PHAuthorizationStatus) { PHAuthorizationStatusNotDetermined = 0, // 未询问用户是否授权 PHAuthorizationStatusRestricted, //转载 2016-10-13 09:25:28 · 1756 阅读 · 0 评论 -
iOS中respondsToSelector与conformsToProtocol的相关理解和使用
respondsToSelector相关的方法 :-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例-(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个select转载 2016-07-04 10:13:50 · 244 阅读 · 0 评论 -
处理缩放手势
先定义全局的oldTransform 等于要操作视图的TransformTransform@property(nonatomic,assign)CGAffineTransform oldTransform; _oldTransform = _imageView.transform; UIPinchGestureRecognizer *pinchGestureRecognizer =原创 2016-07-02 09:45:49 · 277 阅读 · 0 评论 -
关于CAShapeLayer的一些实用案例和技巧
一、使用CAShapeLayer实现复杂的View的遮罩效果1.1、案例演示最近在整理一个聊天的项目的时候,发送图片的时候,会有一个三角的指向效果,指向这张图片的发送者。服务端返回给我们的图片只是一张矩形的图片,我们如何把一张矩形的图片或者View,加上一层自定义遮罩效果,就是本文要讲的内容。效果演示如下:第一张是一个View的遮罩效果,第二张是UIImageView的遮罩效果。演转载 2016-07-12 10:47:32 · 288 阅读 · 0 评论 -
如何更好地限制一个UITextField的输入长度
要限制一个UITextField的输入字数(参考链接),首先想到的应该是通过UITextFieldDelegate的代理方法来限制:- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSS转载 2016-06-03 11:14:09 · 280 阅读 · 0 评论 -
视频背景
方案一 添加视频- (void)viewDidLoad { [super viewDidLoad]; // Load the video from the app bundle. NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"video" withExtension:@"mov"];原创 2016-04-19 09:54:05 · 580 阅读 · 0 评论 -
OC与swift的相互调用
1、 swift调用oc将 Objective-C 导入 Swift 要在同一个 app target 中导入 Objective-C 文件供 Swift 使用,你需要依赖 Objective-C的桥接头文件(Objective-C bridging header)来暴露给 Swift。当你添加 Swift 文件到现有的 Objective-C 应用时,Xc转载 2016-04-05 11:21:21 · 759 阅读 · 0 评论 -
同一字符串显示不同风格
加红色删除线 NSString *oldPrice = @"价格: 69.00-129.00"; NSUInteger length = [oldPrice length]; NSMutableAttributedString *attri = [[NSMutableAttributedString alloc] initWithString:o原创 2015-08-18 15:19:51 · 329 阅读 · 0 评论 -
在Xcode中使用Git进行源码版本控制
在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时,我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目,那么代码的控制就会非常复杂。幸运的是,开发者不需要自己控制这些,因为有专门的软件来负责,叫做版本控制系统。版本控制系统,或者说修改控制系统,实际上是一种检测源文件的改变并将其保存留作以后参考使用的机制(软件)。此外,它还能记录其他有用转载 2015-11-02 11:13:45 · 249 阅读 · 0 评论 -
iOS 时间戳
设置时间显示格式: NSString* timeStr = @"2011-01-26 17:40:50"; NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateStyle:NSDateFormatterMediumStyle转载 2015-11-09 16:27:50 · 270 阅读 · 0 评论 -
渐变色
通过drawRect可快速给View的子类设置渐变色,imageView除外-(void)drawRect:(CGRect)rect{ //初始化渐变层 if (self.gradientLayer) { [self.gradientLayer removeFromSuperlayer]; self.gradientLayer = ni原创 2016-01-11 16:08:54 · 295 阅读 · 0 评论 -
webView里面图片的点击事件
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ //将url转换为string NSString *requestString = [[requ原创 2016-01-12 15:54:40 · 465 阅读 · 0 评论 -
app跳转到微信指定公众号
搞了大半天的巨坑微信开放平台应用要通过开发者资质认证,并且绑定指定要跳转的微信公众账号用到的接口:#pragma mark - JumpToBizProfileReq/* ! @brief 第三方通知微信,打开指定微信号profile页面 * * 第三方通知微信,打开指定微信号profile页面 */@interface JumpToBizProfileReq : BaseR原创 2016-01-19 17:29:29 · 17692 阅读 · 6 评论 -
SDWebImage内部实现过程
入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经下载 qu转载 2016-01-20 10:19:09 · 302 阅读 · 0 评论 -
iOS获取UUID,并使用keychain存储
UDID被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。但这仍是目前为止最佳的解决办法了,如果有更好的解决办法,欢迎留言。(我整理的解决办法的参考来源:http://blog.k转载 2016-02-18 16:06:05 · 274 阅读 · 0 评论 -
iOS安全系列之二:HTTPS进阶
上一篇《iOS安全系列之一:HTTPS》只是介绍了比较偏应用的初级知识,对于想要深入了解HTTPS的同学来说是远远不够的,刚好本人最近工作上也遇到并解决了一些HTTPS相关的问题,以此为契机,决定写这篇更深入介绍HTTPS的文章。本文分为以下五节:其中第1节“中间人”是比较常见基础的知识,网上也可以找到相关的资料,如果对中间人攻击已经有了足够的了解,可以跳过。后面几节则是个人在iO转载 2016-03-02 10:13:30 · 1224 阅读 · 0 评论 -
被误解的 MVC 和被神化的 MVVM
被误解的 MVCMVC 的历史MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。MVC 的概念最早出现在二十世纪八十年代的 施乐帕克 实验室中(对,就是那个发明图形用户界面和鼠标的实验室),当时施乐帕克为 Smalltalk 发明了转载 2016-03-17 17:01:00 · 295 阅读 · 0 评论 -
iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
说明: 1)该文简短介绍在iOS开发中遍历字典、数组和集合的几种常见方式。 2)该文对应的代码可以在下面的地址获得:https://github.com/HanGangAndHanMeimei/Code 一、使用for循环 要遍历字典、数组或者是集合,for循环是最简单也用的比较多的方法,示例如下: 1 //普通的for循环遍历 2 -(void)iter转载 2016-03-17 18:08:21 · 266 阅读 · 0 评论 -
iOS崩溃调试的使用和技巧总结
在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的。现在网上有很多关于解析崩溃信息的博客,但是大多质量参差不齐,或者有些细节没有注意到。今天写一篇博客总结一下我对崩溃调试的使用和技巧,如果有哪些错误或遗漏,还请指点,谢谢!获取崩溃信息在iOS转载 2016-01-11 13:39:44 · 336 阅读 · 0 评论 -
关于状态栏的相关设置(UIStatusBar)
设置statusBar的【前景部分】简单来说,就是设置显示电池电量、时间、网络部分标示的颜色, 这里只能设置两种颜色:默认的黑色(UIStatusBarStyleDefault)白色(UIStatusBarStyleLightContent)可以设置的地方有两个:plist设置里面 和 程序代码里1.plist设置statusBar在plist里增加转载 2016-01-06 15:48:30 · 276 阅读 · 0 评论 -
设置返回按钮的图片
ios7之后设置返回按钮的图片样式,必须一起写才有用 UIBarButtonItem * back = [[UIBarButtonItem alloc]initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; [self.navigationController.navigationB原创 2015-12-29 10:05:49 · 450 阅读 · 0 评论 -
ios小数向上、下取整,计算结果向上、下取整
小数向上取整,指小数部分直接进1 x=3.14,ceilf(x)=4小数向下取整,指直接去掉小数部分 x=3.14,floor(x)=3计算结果向上取整 A被除数,B除数 ,(A+B-1)/B原创 2015-11-10 11:10:32 · 714 阅读 · 0 评论 -
设置导航栏的透明度
设置导航栏的透明度,先要设置纯色背景图,再隐藏导航栏下方的黑线,这样看起来才会跟内容更加连贯!//1设置一个纯色image,给uiColor添加类别方法:+(UIImage*) createImageWithColor:(UIColor*) color{ CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsB原创 2015-11-11 15:48:20 · 1242 阅读 · 0 评论 -
plist文件与json的存储与读取
NSString *plistPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; //得到完整的文件名 NSString *filename=[plistPath stringByAppendingPathCo原创 2015-11-30 19:40:11 · 506 阅读 · 0 评论 -
枚举
一般情况下,我们采用C风格的enum关键字可以定义枚举类型。enum{ UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft, UIViewAnimationTransitionFlipFromRight, UIViewAnimationTransitionCu转载 2015-12-02 19:05:27 · 205 阅读 · 0 评论 -
IOS 自定义button有效点击范围
那么如何自定义按钮点击的有效区域呢,其实很简单,只要重写一个函数即可: - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 系统发生触摸事件的时候会从window到父控件到子控件一个个检测触摸点是否在其中,如果在其中,则返回YES,最后返回YES的子控件作为响应事件的控件。 我们转载 2015-12-09 10:45:01 · 1807 阅读 · 1 评论