iphone开发注意事项

1.给UITableViewController添加ToolBar。


 self.navigationController.toolbarHidden = NO; //默认是隐藏的。


//添加MessageToolBar ,messageToolBar是IBOutlet的一个ToolBar。


 self.toolbarItems =  [[[NSMutableArray alloc] initWithArray:self.messageToolBar.items] autorelease]; 


 self.navigationController.toolbar.barStyle = self.messageToolBar.barStyle;  


2.后台运行一个方法,如果该方法需要修改UI,为了防止出错,应在主线程里修改UI。


[self performSelectorInBackground:@selector(updateInfo)]; 


在UpdateInfo里如果要修改UI ,


[self performSelectorOnMainThread:@selector(updateUIMethod) withObject:nil waitUntilDone:NO]; 


同时注意,后台程序的方法应该放在NSAutoRelease pool里的,如下所示:


NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
xxxx
[pool release]; 


3.在A类里动态的设定B类或者C类的方法。


[self.actionTarget performSelector:self.actionMethod withObject:parameter]; 


actionTarget   -> id类型的属性。设置B 类或者C类。


actionMethod -> Sel类型的属性。设置具体的方法名


parameter     -> 参数


4.设置Navigation的提示信息和进度条设置


   self.navigationItem.prompt : 提示信息
   self.navigationItem.titleView :存放ProgressBar等其它提示信息的View


   在进度条显示完了后,需要清空显示进度信息:


   self.navigationItem.prompt = nil;
   self.navigationItem.titleView = nil; 


5.从资源文件xib里加载View的方法


 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyView"
                                                         owner:self
                                                       options:nil];
MyView *view = [nib objectAtIndex:0]; 


6. UIAlterView 修改默认的Frame高度


在其委托里实现这个方法 


- (void)willPresentAlertView:(UIAlertView *)alertView 
{
    alertView.frame = CGRectMake(5.f, 1.f, 100.f, 200.f);
}
参考:http://stackoverflow.com/questions/2763713/change-width-of-uialertview-in-ipad
 
 7.获取iphone屏幕大小


CGRect screenBounds = [ [ UIScreen mainScreen ] bounds ];
CGRect screenRect= [ [ UIScreen mainScreen ] applicationframe ];  


8. 修改TableView的样式,让UITableView显示Windows的背景图片。


    self.tableView.backgroundColor = [UIColor clearColor];
    self.tableView.opaque = NO;
    self.tableView.backgroundView = nil;


   如果要修改UITableCell的事情backgroundColor需要再 tableView:willDisplayCell:forRowAtIndexPath:里修改。


9.通过图片获取颜色。 


[UIColor colorWithPatternImage:[UIImage imageNamed:@"imageName"]];
修改分割线颜色


 self.tableView.separatorColor = [UIColor blackColor]; 


显示文本的地方设置透明色 


 cell.textLabel.opaque = NO;


 这样整个cell就有立体感。 


10.设置UITableView 的checkmark显示样式


修改cell的 accessoryView 


 cell.accessoryView = UIImageView


11. 修改TableView距离导航缆的高度。 


 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section


{
    return 10.0;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];;
}
12. 自定义TableViewCell的背景颜色和选择后的颜色。


 方法一:将TableViewCell的backgroundView和SelectBackGroundView修改成指定的View就可以了。


 方法二: 在Interface Builder里设置cell的image和SelectImage属性,但是要记得UItableView修改seperator的属性为None


13 颜色定义。


  美工一般定义好颜色,然后让程序员去填充颜色,美工一般给的是RGB颜色,那么RGB颜色如果换成UIColor


[UIColor colorWithRed:31.0/255 green:204.0/255 blue:39.0/255 alpha:1.0];


Red,Green,Blue只接受0-1的参数,换算方法是除以255。 


14. Xcode 4设置  NSZombieEnabled


 if you click on the scheme drop down bar -> edit scheme -> arguments tab and then add NSZombieEnabled in the Environment Variables column and YES in the value column


15.自动生成多语言化的StringTable


   如果在代码里全部是通过 NSLocalizedString(@"中文", nil)来对应多语言,最后要整理一个list,手动一个一个粘贴太麻烦。


  自动化生成方法:在命令行目录下进入项目根目录:执行 genstrings -a $(find . -name "*.m"),就会自动生成一个文件对应。


  参考网址 http://steelwheels.sourceforge.jp/Documents/genstring.html


http://iphone.longearth.net/2009/05/25/%E3%80%90iphone%E3%80%91localizablestrings%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7%E4%BD%9C%E3%82%8B-genstrings/ 


16.自定义bond字体 


[UIFont fontWithName:@"Helvetica-Bold" size:16.0] 


17  无边框透明UITableViewCell


self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;    


self.tableView.separatorColor = [UIColor clearColor];              


self.tableView.backgroundColor = [UIColor clearColor];    


self.tableView.opaque = NO;    


self.tableView.backgroundView = nil;


--Cell修改--


self.backgroundView = [[[UIView alloc] init] autorelease];        


self.backgroundView.backgroundColor = [UIColor clearColor];        


self.selectedBackgroundView = [[[UIView alloc] init] autorelease];        


self.selectedBackgroundView.backgroundColor = [UIColor clearColor];


18. 隐藏Tabbar


SampleViewController *obj = [[SampleViewController alloc] init];
[obj setHidesBottomBarWhenPushed:YES];
[self.navigationController pushViewController:obj animated:YES];
[obj release];
19.从UIView获取UImage


#import QuartzCore/QuartzCore.h 
- (UIImage *)getImageFromView:(UIView *)orgView  
 { UIGraphicsBeginImageContext(orgView.bounds.size);  
 [orgView.layer renderInContext:UIGraphicsGetCurrentContext()];  
 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();  
 UIGraphicsEndImageContext();  
return image;  



20. 添加手式识别后,会屏蔽掉touchend方法
  
21.获取手机号码,和IMEI  
 
获取本地iphone手机号码 
[[NSUserDefaults standardUserDefaults] valueForKey:@"SBFormattedPhoneNumber"];  
获取手机的imei
 #import "Message/NetworkController.h" 
 NetworkController *ntc=[[NetworkController sharedInstance] autorelease];  
NSString *imeistring = [ntc IMEI];  
imeistring就是获取的imei。 IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。 


22 NLog的格式,经常忘记,做个笔记


%@ 对象
%d, %i 整数
%u   无符整形
%f 浮点/双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t
%p 指针
%e   浮点/双字 (科学计算)
%g   浮点/双字
%s C 字符串
%.*s Pascal字符串
%c 字符
%C unichar
%lld 64位长整数(long long)
%llu   无符64位长整数
%Lf 64位双字
 
23.更改UISearchBar最下面黑色的边框


 #define SEARCHBAR_BORDER_TAG 1337


- (void) viewDidLoad{
    // Set a custom border on the bottom of the search bar, so it's not so harsh
    UISearchBar *searchBar = self.searchDisplayController.searchBar;
    UIView *bottomBorder = [[UIView alloc] initWithFrame:CGRectMake(0,searchBar.frame.size.height-1,searchBar.frame.size.width, 1)];
    [bottomBorder setBackgroundColor:[UIColor colorWithWhite:200.0f/255.f alpha:1.0f]];
    [bottomBorder setOpaque:YES];
    [bottomBorder setTag:SEARCHBAR_BORDER_TAG];
    [searchBar addSubview:bottomBorder];
    [bottomBorder release];
}
 


24.设置键盘的默认形式。


   比如UITextField 设置为默认数字,和只允许数组数字


   //默认数字 


   textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation
   //只允许输入数字   


   textField.keyboardType = UIKeyboardTypeNumberPad


 


25.UIButton设置文字左对齐


 - emailBtn.contentHorizontalAlignment = UIontrolContentHorizontalAlignmentLeft;
 - emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
 - CGRect buttonRect = emailBtn.bounds;  
   UILabel *myLabel = [[UILabel alloc] initWithFrame: buttonRect];
   myLabel = UITextAlignmentLeft;
   [emailBtn addSubview:myLabel];
   [myLabel release];  


26. retain异常的时候重载这个方法设置断点查看和分析


- (id) retain


{
    // Break here to see who is retaining me.
    return [super retain];
}
 


27.去掉白色半圆


Plist添加 


 Icon already includes gloss effects 为YES




UIPrerenderedIcon 设置不起作用(Xcode4 .0.2)


28.tableView reloadRowsAtIndexPaths 如果不在可见区域,将不会重新加载。
 
29. 设置应用程序的statusbaryanse


再plist里设置Status bar style  Opaque black style


 


30. 设置控件的copy paste的本地化


   - 设置Localization native development region   =》 china


   - 将项目的en.lproj 改成zh_CN.lproj


 31. 允许应用程序通过itunes上传文件(ios3.2以上)


 在info.plist里设置 UIFileSharingEnabled  => YES


 32. 获取UICOLOR的rgb值


const CGFloat* components = CGColorGetComponents(SelectedColor.CGColor);
NSLog(@"Red: %f", components[0]);
NSLog(@"Green: %f", components[1]); 
NSLog(@"Blue: %f", components[2]);
NSLog(@"Alpha: %f", CGColorGetAlpha(SelectedColor.CGColor)); 


 


33.获取2个时间之间的天,小时,分钟


 +(NSString *)TimeRemainingUntilDate:(NSDate *)date {


    NSTimeInterval interval = [date timeIntervalSinceNow];
    NSString * timeRemaining = nil;
    if (interval > 0) {
        div_t d = div(interval, 86400);
        int day = d.quot;
        div_t h = div(d.rem, 3600);
        int hour = h.quot;
        div_t m = div(h.rem, 60);
        int min = m.quot;
        NSString * nbday = nil;
        if(day > 1)
            nbday = @"days";
        else if(day == 1)
            nbday = @"day";
        else
            nbday = @"";
        NSString * nbhour = nil;
        if(hour > 1)
            nbhour = @"hours";
        else if (hour == 1)
            nbhour = @"hour";
        else
            nbhour = @"";
        NSString * nbmin = nil;
        if(min > 1)
            nbmin = @"mins";
        else
            nbmin = @"min";
        timeRemaining = [NSString stringWithFormat:@"%@%@ %@%@ %@%@",day ? [NSNumber numberWithInt:day] : @"",nbday,hour ? [NSNumber numberWithInt:hour] : @"",nbhour,min ? [NSNumber numberWithInt:min] : @"00",nbmin];
    }
    else
        timeRemaining = @"Over";
    return timeRemaining;
}
 


34. Icon specified in the Info.plist not found under the top level app wrapper 


     记住Icon 首字母是大写的,不是icon.png , 是Icon.png 


 


35. 


[iphone]Code Sign error: Provisioning profile XXXX can't be found
http://www.cnblogs.com/baryon/archive/2010/05/06/1728968.html 


http://www.douban.com/note/131009422/ 


 


   1.关闭你的项目,找到项目文件XXXX.xcodeproj,在文件上点击右键,选择“显示包内容”(Show Package Contents)。会新打开一个Finder。注:其实XXXX.xcodeproj就是一个文件夹,这里新打开的一个Finder里面的三个文件就是该XXXX.xcodeproj文件夹里面的文件。
2.在新打开的Finder中找到project.pbxproj,并且打开。在这之中找到你之前的证书的编码信息。我之前报的错误信息是
Code Sign error: Provisioning profile '37D44E7F-0339-4277-9A82-C146A944CD46',所以我用查找的方式找到了所有包括37D44E7F-0339-4277-9A82-C146A944CD46的行,并且删除。
 3.保存,重新启动你的项目,再编译。就OK了。
 


 36.获取手机唯一ID


UIDevice *device = [UIDevice currentDevice];//创建设备对象
NSString *deviceUID = [[NSString alloc] initWithString:[device uniqueIdentifier]];
NSLog(@"%@",deviceUID); // 输出设备id 


 


37 .动态调用一个类的方法


 View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值