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位雙字
 


1.

如果您想在應用裏添加提示功能,比如讓 iPhone 機身震動,可以使用下面這行代碼:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 

 

2.

UItextView設置圓角 

#import <QuartzCore/QuartzCore.h>


layer

UITextView.layer.cornerRadius = 6;

UITextView.layer.masksToBounds = YES;

角度可以自己調

 3.viewdidunload在內存發生警告的時候,會調用,當調回來的時候,就會繼續執行viewdidload方法。 

 

4.iphone  set table scroll postion

    [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
[tableView reloadData];



UItableView  UITextField 

  

NSString *text = ((UITextField *)cell.accessoryView).text;

However, you must be careful about setting up cells and accessing their values. If any cell goes offscreen, it will be removed and you will not be able to access the text field. What you want to do when setting up your cell is:

cell.accessoryView = nil; //Make sure any old accessory view isn't there.

if (/*cell needs text field*/) {

    UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease];

    textField.text = savedValue;

    cell.accessoryView = textField;

    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged];

}



...



- (void) textChanged:(UITextField *)source {

    self.savedValue = source.text;

}
從網上下載圖片
id path = @"http://merrimusings.mu.nu/archives/images/groundhog2.jpg";
NSURL *url = [NSURL URLWithString:path];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data cache:NO]; 

 

NSURL *myURL = [[NSURL alloc] initWithString:@"http://www.google.com/intl/en_ALL/images/logo.gif"];

UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:myURL]];

CGSize imageSize = myImage.size;

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(((320-imageSize.width)/2), ((480-imageSize.height)/2), imageSize.width, imageSize.height)];

myImageView.image = myImage;

[self.view addSubview:myImageView];

[myURL release];
[myImageView release];

[myImage release]; 

 

變例控件的subviews,如表格的cell的所有view找倒textfield

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


[tableView deselectRowAtIndexPath:indexPath animated:YES];

UITableViewCell * cell= [tableView cellForRowAtIndexPath:indexPath];

UITextField *textField =nil;

for(UIView *subview in cell.subviews)

{

if([subview isMemberOfClass:[UITextField class]] )

{

textField = (UITextField *)subview;

[textField becomeFirstResponder];

}

}

//[tableView deselectRowAtIndexPath:indexPath animated:YES];

} 

 

 程序登錄和退出時,如果要做自動登錄,那麼就有必要保存用戶的登陸信息,可放在NSUserDefault裏,如何使用它,下面有個Sample

Saving

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];

// saving an NSInteger
[prefs setInteger:42 forKey:@"integerKey"];

// saving a Double
[prefs setDouble:3.1415 forKey:@"doubleKey"];

// saving a Float
[prefs setFloat:1.2345678 forKey:@"floatKey"];

// This is suggested to synch prefs, but is not needed (I didn't put it in my tut)
[prefs synchronize];

Retrieving

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@"
keyToLookupString"];

// getting an NSInteger
NSInteger myInt = [prefs integerForKey:@"
integerKey"];

// getting an Float

float myFloat = [prefs floatForKey:@"floatKey"];

 

如何自動獲取tableView每行的高度。

因爲TableView的高度計算是先於TableCell的生成。所以必須先計算。參考網址http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/

代碼
#define FONT_SIZE 14.0f
#define CELL_CONTENT_WIDTH 320.0f
#define CELL_CONTENT_MARGIN 10.0f    

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
  NSString 
*text = [items objectAtIndex:[indexPath row]];
 
  CGSize constraint 
= CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
 
  CGSize size 
= [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
 
  CGFloat height 
= MAX(size.height, 44.0f);
 
  
return height + (CELL_CONTENT_MARGIN * 2);
}


- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  UITableViewCell 
*cell;
  UILabel 
*label = nil;
 
  cell 
= [tv dequeueReusableCellWithIdentifier:@"Cell"];
  
if (cell == nil)
  {
    cell 
= [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"] autorelease];
 
    label 
= [[UILabel alloc] initWithFrame:CGRectZero];
    [label setLineBreakMode:UILineBreakModeWordWrap];
    [label setMinimumFontSize:FONT_SIZE];
    [label setNumberOfLines:
0];
    [label setFont:[UIFont systemFontOfSize:FONT_SIZE]];
    [label setTag:
1];
 
    [[label layer] setBorderWidth:
2.0f];
 
    [[cell contentView] addSubview:label];
 
  }
  NSString 
*text = [items objectAtIndex:[indexPath row]];
 
  CGSize constraint 
= CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
 
  CGSize size 
= [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
 
  
if (!label)
    label 
= (UILabel*)[cell viewWithTag:1];
 
  [label setText:text];
  [label setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH 
- (CELL_CONTENT_MARGIN * 2), MAX(size.height, 44.0f))];
 
  
return cell;
}


 SNDate reference

http://iphonedevelopertips.com/cocoa/date-formatter-examples.html 

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/DataFormatting/Articles/df100103.html

http://www.cocoachina.com/bbs/simple/?t10151.html 

 http://www.iphonedevsdk.com/forum/iphone-sdk-development/4528-help-nsdateformatter.html 

 EEE MMM d HH:mm:ss z yyyy"


Tue Apr 06 00:00:00 +0800 2010


NSString *createTime=@"Tue Apr 06 00:00:00 +0800 2010 ";

NSDateFormatter *dateFormat = [[NSDateFormatter allocinit];

[dateFormat setDateFormat:@"EEE MMM d HH:mm:ss z yyyy"];

NSDate *createDate = [dateFormat dateFromString: createTime];

 

UIToolBar add button and add space between two UIButtonItem

UIToolbar* toolbar = [[UIToolbar alloc]

  initWithFrame:CGRectMake(00, width, 45)];

[toolbar setBarStyleUIBarStyleDefault];

// create an array for the buttons

NSMutableArray* buttons = [[NSMutableArray allocinitWithCapacity:1];

UIBarButtonItem *backButton = [[UIBarButtonItem allocinitWithTitle:@"返回" style:UIBarButtonItemStyleBorderedtarget:self action:@selector(backPress:)];

UIBarButtonItem *flexItem = [[UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace

  target:nil

  action:nil];

UIBarButtonItem *doneButton = [[UIBarButtonItem allocinitWithTitle:@"確定" style:UIBarButtonItemStyleBorderedtarget:self action:@selector(donePress:)];

[buttons addObject: backButton];

[buttons addObject: flexItem];

[flexItem release];

[buttons addObject: doneButton];

[backButton release];

[doneButton release];

[toolbar setItems:buttons animated:NO];

    [self.view addSubview:toolbar];

[toolbar release]; 

 推遲某個方法的執行

[self performSelector:@selector(loadDataFromNet) withObject:nil afterDelay:0.1]; 

 

通過Animate的方式移動View

         
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:kAnimationDurationStart];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [view setFrame:CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height, view.frame.size.width, view.frame.size.height)];
        [UIView commitAnimations];


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章