现在的位置: 首页 > 综合 > 正文

杂七杂八888

2013年04月09日 ⁄ 综合 ⁄ 共 5842字 ⁄ 字号 评论关闭

1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用)。

其实在代码里还是可以设置的,那就是删除背景view

[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview];

2,NSDate:

[java] view
plain
copy

  1. 字母  日期或时间元素    表示     示例       
  2. G     Era   标志符     Text     AD       
  3. y     年     Year     1996 96       
  4. M     年中的月份     Month     July;   Jul; 07       
  5. w     年中的周数     Number     27       
  6. W     月份中的周数        Number     2       
  7. D     年中的天数     Number     189       
  8. d     月份中的天数        Number        10       
  9. F     月份中的星期     Number        2       
  10. E     星期中的天数    Text     Tuesday;   Tue       
  11. a     Am/pm   标记        Text     PM       
  12. H     一天中的小时数(0-23)     Number       0       
  13. k     一天中的小时数(1-24)      Number     24       
  14. K     am/pm   中的小时数(0-11)     Number    0       
  15. h     am/pm   中的小时数(1-12)     Number    12       
  16. m     小时中的分钟数        Number     30       
  17. s     分钟中的秒数         Number     55       
  18. S     毫秒数         Number     978       
  19. z     时区     General   time   zone     Pacific   Standard   Time;   PST;   GMT-08:00       
  20. Z     时区     RFC   822   time   zone     -0800       



[注意]在开发中,如果使用年月日,用NSDateFormatter setFormat :@"yyyy-MM-dd",如果是使用小时和分钟,设置为:"HH:mm",切记不要设置“HH-mm”,这样会出错的。

举例:

[java] view
plain
copy

  1. //创建一个时间对象  
  2.     NSData * date = [NSDate date];  
  3.     //打印时间  
  4.     NSLog(@"today is %@",date);  
  5.       
  6.     //再获取的时间date减去24小时的时间(昨天的这个时候)  
  7.     NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];  
  8.     NSLog(@"yesterday is %@",yesterday);//打印昨天的时间  
  9.       
  10.     /*字符串换成时间*/   
  11.     //设置一个字符串的时间  
  12.     NSString *datestring = [NSString stringWithFormat:@"1999-09-03"];   
  13.     //想要设置自己想要的格式,可以用nsdateformatter这个类,这里是初始化  
  14.     NSDateFormatter * dm = [[NSDateFormatter alloc]init];   
  15.     //指定输出的格式   这里格式必须是和上面定义字符串的格式相同,否则输出空  
  16.     [dm setDateFormat:@"yyyy-MM-dd"];  
  17.     //把字符串的时间转换成Date对象,用dateFromString方法  
  18.     NSDate * newdate = [dm dateFromString:datestring];  
  19.     //输出  
  20.     NSLog(@"newdate is %@",newdate);  
  21.       
  22.       
  23.     /*把时间转换成字符串*/  
  24.     //把Date对象转换成String对象  用stringFromDate方法  
  25.     NSString * datestring2 = [dm stringFromDate:newdate];  
  26.     //打印  
  27.     NSLog(@"datestring2 is %@",datestring2);  

3,如果使用 UTTabviewCell,设置其accessory样式为:Detail Disclosure ,就是在每一个cell右边设置一个detail button。如果这样的操作是使用storyboard,进行的,它会要求你给每一个你cell设置indentifier,然后你会在以下方法内设置重用indentfier,别忘记加上一句话,否则编译运行时可能会弹出: cell未实例化



4,在开发项目中,有时有这样的需求:运行程序,登陆界面是一个自由的ViewController,只是摆放几个TextField和button,点击后跳转到孩子选择或其它选择界面,点击选项后进入我们的主界面:这个时候,在登陆界面作跳转时,会有好多的方法,如果使用storyboard,就比较方便了,设置一个segue,跳转代码中:

[self PerformSegueWithIdentifier:@"targetViewController",self]; 就可以了,可是我想实例化想要跳转的控制器,然后设置某一属性的值,这样跳转后控制器获取那个属性,就会得到值了,可是这样做会有一个问题:

主界面控制器如果使用了navigatorViewController,并且是其RootViewController,等到在主界面设置功能,点击某一功能,想push到一个新页面时,问题就来了,你会发现毫无反应,没有报错,只是segue无法跳转。后来终于找到原因:就是我在登陆控制器跳转时没有使用segue的方法,而是用代码self.storyboard,加载一个新类,具体原理目前还没有搞明白,先把出问题的代码记录下来,回头补之:


代码这样做,会导致其后无法使用navigatorViewController做push跳转



5,(1010更新)开发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null~,然后我们把此值赋值给NSArray,NSdictionary,或是NSString,然后我们会判断此值为null时,所做的处理,而通常惯性思维判断时我们都会写:if(dict == nil)或是if(dict == Nil)或是if(dict == NULL)再或是if(dict isEqual nil),我们发现,都不好用,根本没有起到判断的作用~后来我才发现,原来不能这样来判断。

简单点说,就是当字典,数组为null时,后台打印的输出结果是这样:


然后,我们需要在代码判断时利用[NSNull null]来判断,具体如:

isEqual:[NSNull null] 就搞定了,nsarray也是同样的道理。

控制台打印:str=(null) 代表着 字符串或数组或字典是一个空指针,(而非空字符串)判断的时候,直接用:

if(str == nil)就可以了。如下图所示:

而控制台打印:str =  <null>,代表着这是一个空字符串,赋值为空,指针是存在的,只是内容为空,这种判断需要使用:

if(str is equal [NSNull null ]) ,因为在ios上,内容为空不能简单的判断str==null(null 在ios上得用[NSNull null])

一般这种情况是,服务器那边是null,直接返回@"null"的字符串,这样在ios这边不好判断,最好跟后台沟通,如果遇到null值,返回@"",好做判断

 

6,给uiview设置圆角样式

只需在加载时,添加这样的话就可以了:

testView.layer.cornerRadius = 6;
        testView.layer.masksToBounds = YES;

注意,需要 import <QuartzCore/QuartzCore.h> 导入,否则,不能识别cornerRadius和masksToBounds。

uiview设置背景图片:

 [theMainView setBackgroundColor: [UIColor colorWithPatternImage: [UIImage imageNamed: @"bg.png"]]];

 

imageName 缓存,下面方法不缓存

NSString *thePath = [[NSBundle mainBundle] pathForResource:@"default" ofType:@"jpeg"]; 
UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:thePath"];  
controller
.productImg.image = prodImg;   
[prodImg release]; 


7,隐藏键盘的两种方法

 1-1Did End On Exit 调用下面事件当点击键盘return得时候就会隐藏键盘
- (IBAction)textFieldShouldReturn:(UITextField *)textField {
    //[sender resignFirstResponder];
    if (textField == chi) {
        [chi resignFirstResponder];
        double m=[chi.textdoubleValue]/3.003;
        double f=m *3.2808;
        meter.text=[[NSStringalloc] initWithFormat:@"%.4f",m];
        feet.text=[[NSStringalloc] initWithFormat:@"%.4f",f];
    }
    if (textField == meter) {
        [meter resignFirstResponder];
        
    }
    if (textField == feet) {
        [feet resignFirstResponder];
    }
}
1-2 点击屏幕得时候隐藏键盘
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch=[[event allTouches] anyObject];
    if (touch.tapCount >=1) {
        [chi resignFirstResponder];
        [meter resignFirstResponder];
        [feet resignFirstResponder];
    }
}

1-2的方法相当于屏幕任何位置的点击事件(除了各组件的点击处)可以在这个方法里执行要隐藏或remove的view。



8,UITextField密文显示输入内容:


只需要在TextField属性中的Secure(安全的)勾选上就可以了。显示apple默认的密文显示方式。


9,通过系统自带的NSPredicate使用正则表达式。(在TextField中)

[java] view
plain
copy

  1. NSString *regex =[NSString stringWithFormat:@"^1(3[4-9]|5[012789]|8[2378]|47)\\d{8}$"];  
  2. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];  
  3. BOOL isMatch = [predicate evaluateWithObject:editPhoneField.text];  



10,项目设置应用程序显示名称:

     1,在项目的Supporting Files下寻找infoPlist.strings文件,打开后会看到一片空白(英文默认是跟随项目名称显示)。此时,可以就地添加一句代码:CFBundleDisplayName="爱贝通";

     这样的话,无论手机设置英文语言还是中文语言,应用程序都会显示设置的名称。

     2,为了国际化而言,我们最好创建一个chinese专有的infoPlist.strings文件。

如上图所示,添加一个中文的plist

然后打开添加代码:

这个时候,大功告成。部署在模拟器或真机中吧,你的手机设置(中/英)文语言,它就会调用相应的配置文件。

11更改Xcode的缺省公司名

        

[java] view
plain
copy

  1. //  testAppDelegate.m    
  2. //  test    
  3. //    
  4. //  Created by gaohf on 11-5-24.    
  5. //  Copyright 2011 __MyCompanyName__. All rights reserved.  

        在终端中执行以下命令:

        

[java] view
plain
copy

  1. defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME" = "COMPANY";}'   

         

[java] view
plain
copy

  1. //    
  2. //  testAppDelegate.m    

抱歉!评论已关闭.