分享几个iOS开发中的冷知识。

:如何最快获取绝对路径:直接把某个文件或文件夹,拖动到文本输入框,路径会自动显示出来——这是很多人头疼的一个问题。

二:按住command+alt键,拖动,可创建快捷方式

三:随机数的使用头文件的引用        #import#importsrandom()的使用

srandom((unsigned)(mach_absolute_time() & 0xFFFFFFFF));

直接使用 random() 来调用随机数

四:查询App信息 http://itunes.apple.com/lookup?id=284910350

五:UIImageview中旋转图像

float rotateAngle = M_PI;

CGAffineTransform transform =CGAffineTransformMakeRotation(rotateAngle);

imageView.transform = transform;

以上代码旋转imageView, 角度为rotateAngle, 方向可以自己测试哦

六:1.网上搜索字体文件(后缀名为.ttf,或.odf)

2.把字体库导入到工程的resouce中

3.在程序viewdidload中加载一下一段代码

NSArray *familyNames = [UIFont familyNames];

for( NSString *familyName in familyNames ){

printf( "Family: %s \\n", [familyName UTF8String] );

NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];

for( NSString *fontName in fontNames ){

printf( "\\tFont: %s \\n", [fontName UTF8String] );

}

}

4.假如你加入的字体为微软雅黑,这时可以在NSLog中看到MicrosoftYaHei

5.然后在你的工程的Info.plist文件中新建一行(Add Row),添加key为:UIAppFonts,类型为Array或Dictionary都行;在UIAppFonts下再建立一个键值对,key为:Item 0,添加Value为XXX.tte为XXX.tte为XXX.ttf(你字体的名字,string型),可以添加多个

6.在你的项目里要用字体的时候 xx.font = [UIFont fontWithName:@"MicrosoftYaHei" size:20.0],这样就可以了。

七:.UITextView根据文本修改高度

首先根据文本计算高度:

UIFont *font = [UIFont systemFontOfSize:14.0];

CGSize size = [m_textView.text sizeWithFont:font constrainedToSize:CGSizeMake(240,9999) lineBreakMode:UILineBreakModeWordWrap];

//constrainedToSize的两个参数其实我也没搞明白,可能第一个参数是textView的宽度,第二个参数还没搞懂,可以指教一下。

然后修改textView的高度—[m_textView setFrame:CGRectMake(52, 104, 240, size.height+30)];

八:UITableViewCell 重用问题—解决在cell中添加其他控件时,滚动后重复加载,文字重影,控件错乱的情况

NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d", [indexPath section], [indexPath row]];

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

//添加代码}

九:禁止程序运行时自动锁屏

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

十:实现某个view点一下就移除时,要防止移除两次。(此方法适用于希望GestureRecognizer只执行一次的情况)

-(void)OnTapViewTobeRemoved:(UITapGestureRecognizer *)sender{

if (!sender.enabled) {

return;

}

sender.enabled = NO;

[sender.view removeFromSuperview];}

十一:禁止textField和textView的复制粘贴菜单:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{

if ([UIMenuController sharedMenuController]) {

[UIMenuController sharedMenuController].menuVisible = NO;

}

return NO;}

十二:如何进入软件在app store 的页面:

先用iTunes Link Maker找到软件在访问地址,格式为itms-apps://ax.itunes.apple.com/...,然后

#define  ITUNESLINK   @"itms-apps://ax.itunes.apple.com/..."

NSURL *url = [NSURL URLWithString:ITUNESLINK];

if([[UIApplication sharedApplication] canOpenURL:url]){

[[UIApplication sharedApplication] openURL:url];}如果把上述地址中itms-apps改为http就可以在浏览器中打开了。可以把这个地址放在自己的网站里,链接到app store。

iTunes Link Maker地址:http://itunes.apple.com/linkmaker

十三:判断一个字符串是否包含另一个字符串:

[str1 rangeOfString:str2].length != 0 ? @"包含" : @"不包含"

十四:设置label ,imageview,等点击时事件

UITapGestureRecognizer *imageTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImage:)];

// [imageView setUserInteractionEnabled:YES]; 如果不能点击,设置可编辑

[imageView addGestureRecognizer:imageTap];

十五:根据当前键盘的高度来设置UITextField的位置

- (void)textFieldDidBeginEditing:(UITextField *)textField{

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardDidShowNotification object:nil];}

- (void)keyboardWillShow:(id)sender {

CGRect keyboardFrame;

[[[((NSNotification *)sender) userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame];

CGFloat keyboardHeight = CGRectGetHeight(keyboardFrame);

[self.textImageView setFrame:CGRectMake(0, 416-keyboardHeight, 320, 45)];}

十六:计算当前label随字体增加的长度(单行)

CGSize boundingSize = CGSizeMake(320.0f, CGFLOAT_MAX);

CGSize requiredSize = [status.user.username sizeWithFont:[UIFont boldSystemFontOfSize:13] constrainedToSize:boundingSize lineBreakMode:UILineBreakModeWordWrap];

CGFloat requiredWidth = requiredSize.width;

十七:计算UIlabel 随字体多行后的高度

+ (CGFloat)calcTextHeight:(int)textWidth text:(NSString *)text font:(int)fontSize {

CGRect bounds, result;

bounds = CGRectMake(0, 0, textWidth, 300);

UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];

label.font = [UIFont systemFontOfSize:fontSize];

label.text = text;

result = [label textRectForBounds:bounds limitedToNumberOfLines:20];

return result.size.height;

}

或者CGSize requiredSize = [introduceLabel.text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(296.0f, FLT_MAX) lineBreakMode:UILineBreakModeTailTruncation];

文中内容都是项目实践过程中解决问题中自己遇到过并且用过的,也有些平时自己收集起来的。也会随时更新,多多指教。

你可能感兴趣的:(分享几个iOS开发中的冷知识。)