iOS-收集的不常用却实用的小方法和技巧

转载 2016年08月31日 16:48:32

1.颜色转变成图片

- (UIImage *)createImageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
}

2.app评分跳转

-(void)goToAppStore
{
    NSString *str = [NSString stringWithFormat:
                     @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d",547203890];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}

3.获取当前系统语言环境

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defs objectForKey:@"AppleLanguages"];
NSString *preferredLang = [languages objectAtIndex:0];

4.计算字符串的高度

NSString *str = @"chuanzhang";
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *dicAtt = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:15],NSFontAttributeName,paragraphStyle.copy,NSParagraphStyleAttributeName, nil];
NSAttributedString *attribute = [[NSAttributedString alloc]initWithString:str attributes:dicAtt];
CGRect frame = [attribute boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil];

5.强行关闭app的方法

// 私有API
[[UIApplication sharedApplication] performSelector:@selector(terminateWithSuccess)];
// C语言方法
exit(0);

6.如何快速的查看一段代码的执行时间

#define TICK   NSDate *startTime = [NSDate date]
#define TOCK   NSLog(@"Time: %f", -[startTime timeIntervalSinceNow])
// 在想要查看执行时间的代码的地方进行这么处理
TICK
//do your work here
TOCK

7.在使用view的缩放的时候,layer.border.width随着view的放大,会出现锯齿化的问题,解决这个问题需要设置这个属性。

self.layer.allowsEdgeAntialiasing = YES;

8.instrument中time profile 中的self, #self,%self各代表什么 ?


333.jpeg

下面引用了一下网上的具体内容

Self is "The number of times the symbol calls itself." according to the Apple Docs on the Time Profiler.

From the way the numbers look though, it seems self is the summed duration of samples that had this symbol at the bottom of its stack trace. That would make:

self: the number of samples where this symbol was at the bottom of the stack trace

% self: the percent of self samples relative to total samples of currently displayed call tree

(eg - #self / total samples).
So this wouldn't tell you how many times a method was called. But it would give you an idea how much time is spent in a method or lower in the call tree.

9.神器计算图片位置的函数:AVMakeRectWithAspectRatioInsideRect()
通过这个函数,我们可以计算一个图片放在另一个 view 按照一定的比例居中显示,可能说的我比较抽象,还是用图来显示,可以说它可以直接一个 image 以任何的比例显示显示在 imageview 中居中所处的位置,拿 UIViewContontAspectFit来演示

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 300, 300)];
imageView.center = self.view.center;
imageView.backgroundColor = [UIColor redColor];
imageView.contentMode = UIViewContentModeScaleAspectFit;
UIImage *image = [UIImage imageNamed:@"mm.jpg"];
imageView.image = image;

 CGRect iamgeAspectRect = AVMakeRectWithAspectRatioInsideRect(image.size, imageView.bounds);
NSLog(@"iamgeAspectRect = %@, imageView =%@",NSStringFromCGRect(iamgeAspectRect),NSStringFromCGRect(imageView.frame));
[self.view addSubview:imageView];

图片显示如下:


mm.png

log 打因结果如下:

iamgeAspectRect = {{37.563884156729145, 0}, {224.87223168654171, 300}}, imageView ={{37.5, 183.5}, {300, 300}}

可以从 log 得出 对应的 image 以 aspectFit 的方式在 imageView 的位置,在 imageView 中的位置是(37.5,0)。这样你根本不需要任何多的代码来计算了。(ps:这个函数是在 AV框架的,童鞋们自行导入。)

具体它的其他的好处,如果你是做相机或者图片处理的你就知道它的好处了,什么处理横屏照片了,16:9,1:1,4:3图片在控件中的位置,控件上的点对应图片上的点的位置拉,等等。

10.关于 如果一个矩形如果做了平移旋转缩放等一系列操作之后,上下左右的四个点(甚至矩形上任意一个点)的位置。

CGPoint originalCenter = CGPointApplyAffineTransform(_mStyleLeftEyeView.center,
                                                     CGAffineTransformInvert(_mStyleLeftEyeView.transform));

//1左眼内眼角
CGPoint bottomRight = originalCenter;
bottomRight.x += _mStyleLeftEyeView.bounds.size.width / 2;
bottomRight.y += _mStyleLeftEyeView.bounds.size.height / 2;
bottomRight = CGPointApplyAffineTransform(bottomRight, _mStyleLeftEyeView.transform);

首先这个 styleLeftView 就是一个矩形的 view,这里以右下角的点做示范,做无论做了任何的 tranform 之后都可以得到它的点的位置
11.tableViewCell上的button,点击获取所在row

UITableViewCell *cell = (UITableViewCell *)[[btn superview] superview];
NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];

12.设置粘贴内容

[UIPasteboard generalPasteboard].string = @"string";
// 获取粘贴内容
 NSString *string = [UIPasteboard generalPasteboard].string;

13.iPhone为了节省电力所以有一个自动休眠机制,如果想让我们的APP不自动进入休眠只需要设置 UIApplication的idleTimerDisabled 属性为 YES 即可。(切勿滥用)
示例:

[UIApplication sharedApplication].idleTimerDisabled = YES;

14.UIApplicationUserDidTakeScreenshotNotification通知,当用户截屏时触发

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenCapture) name:UIApplicationUserDidTakeScreenshotNotification object:nil];
- (void)screenCapture{
    // doSomething
}


文/船长_(简书作者)
原文链接:http://www.jianshu.com/p/a492eb6ad7fa
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

iOS-收集的不常用却实用的小方法和技巧

1.颜色转变成图片 - (UIImage *)createImageWithColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0...
  • u012943853
  • u012943853
  • 2015年12月16日 08:33
  • 132

Eclipse日常中最实用的技巧,不看后悔哦!

1、给Eclipse添加更方便的提示功能: 首先,默认情况下,Eclipse默认是通过一个.来进行提示的,这样做有些不太方便,如果随便写一个字母就有对应的提示,可以做如下操作: Windows--pe...
  • weiguolong0306
  • weiguolong0306
  • 2015年10月29日 21:42
  • 5044

(转)php有用但不常见函数拾遗

sys_getloadavg() 这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。 ...
  • jackyrongvip
  • jackyrongvip
  • 2013年07月01日 17:34
  • 657

一些实用的python小脚本

referer:http://wooyun.org/bugs/wooyun-2015-0141726 #coding:utf-8 import re import urllib2 import thr...
  • p656456564545
  • p656456564545
  • 2015年11月02日 14:23
  • 686

iOS开发之-收集的不常用却实用的小方法和技巧

1.颜色转变成图片 - (UIImage *)createImageWithColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0...
  • zhonggaorong
  • zhonggaorong
  • 2016年08月11日 11:21
  • 462

25个超实用方法教你设计优秀海报

大学生来收!25个超实用方法教你设计优秀海报第一趴 海报设计充满着无数可能,它不必墨守成规,尽可大胆,创意无限。海报也有着丰富的种类,或是演唱会的大标题型,或是信息量较大的文本型。无论是...
  • Zhangmeng000008
  • Zhangmeng000008
  • 2015年05月17日 10:22
  • 1247

【Unity实用小技巧】Unity使用总结(一)

此总结部分仅为个人最初学习NGUI到现在使用NGUI过程中的点滴总结,有些可能比较久了,所以看上去会比较简单,就此Mark,也权当学习记录。 1.      同时打开多个Unity工程方法:菜单...
  • Winner_2012
  • Winner_2012
  • 2015年06月26日 16:44
  • 1173

常见的几种优化方法

常见的几种最优化方法 1. 梯度下降法(Gradient Descent)   梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数...
  • u012684062
  • u012684062
  • 2016年12月12日 11:27
  • 1137

JavaScript 代码片段

以YYYY-MM-DD的格式输出今天的日期 function Today () { var d = new Date(); var year = d.getFullYear(); /...
  • cxl444905143
  • cxl444905143
  • 2015年07月13日 11:06
  • 350

8个SQL语句常用优化技巧

要提高SQL语句的执行效率,最常见的方法就是建立索引,以及尽量避免全表扫描。在本章MySQL教程中,UncleToo给大家整理一些常见的SQL优化技巧,避免全表扫描。一个简单的优化,也许能让你的SQL...
  • csdnstudent
  • csdnstudent
  • 2014年10月23日 15:31
  • 11675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS-收集的不常用却实用的小方法和技巧
举报原因:
原因补充:

(最多只允许输入30个字)