iPhone開發之建立簡單介面視圖的三種方式之二 使用Xcode4完全手動構建介面

來源:互聯網
上載者:User

有人說Xcode4都提供完全自動構建介面了(詳細見第一篇文章),為什麼還要用完全手動的呢?雖然Xcode為我們提供了方便快捷的UI設計架構,但是架構架構畢竟還有他的局限性,有些地方還不如我們加兩行代碼來的輕鬆愉快,在加上使用完全手動構建介面有助於我們加深理解Cocoa touch裡面各種控制項的屬性方法,加深理解!

 

        同第一篇一樣,這裡我們還是同樣構建一個一模一樣的溫度轉換器。

1.建立Xcode工程

        對於手動建立介面來說,模板對於我們來說不重要。這裡方便講解,繼續使用和上一篇文章一樣的Navigation-based模板,填寫項目名稱其他選項均預設。這裡我建立工程名為HelloWorld2。

2.修改工程檔案結構

        建立的工程包含HelloWorld2AppDelegate.h/HelloWorld2AppDelegate.m RootViewController.h/RootViewController.m  以及兩個xib檔案。

        第一步,將RootViewController對應的頭和實現檔案以及xib檔案從項目中刪除,然後在工程上點擊右鍵選擇“New File...”,選擇Cocoa Touch選項卡裡面的“UIViewController subclass”, next之後在subclass of 裡面輸入“UIViewController”(預設就是),繼續“Next”,然後填寫建立的子類名稱,然後“Save”。

        第二步,刪掉HelloWorld2AppDelegate.h及實現.m檔案。

        第三步,找到HelloWorld2-Info.plist檔案,刪除叼Main nib file base name 欄位儲存。

        做完這三步,檔案修葺工作就完成了。如

 3.手動建立介面

        在你建立的視圖控制類裡面,有這樣一個方法 叫viewDidLoad,看名字就知道當視圖被載入的時候會調用次方法,大多數view的初始化工作都放在此方法裡面。

        根據我們之前在圖紙上設計的介面,我們現在需要兩個Label,兩個輸入框,一個按鈕,以及按鈕響應的方法。

        第一步:點擊中RootViewController.h,在裡面定義兩個UITextField控制項,以及按鈕響應的事件。

 

 

@interface RootViewController : UIViewController 

    IBOutlet UITextField    *field1; 

    IBOutlet UITextField    *field2; 

- (IBAction)convert:(id)sender; 

@end 

第二步:開啟RootViewController.m檔案,找到ViewDidLoad方法,將如下代碼粘貼在裡面

 

view plainprint?

UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//建立視圖 

contentView.backgroundColor = [UIColor whiteColor]; 

self.view = contentView; 

[contentView release]; 

 

UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"]];//使用指定圖片初始化UIImageView 

bgImageView.userInteractionEnabled = YES;//互動 

[self.view addSubview:bgImageView];//添加到視圖 

 

field1 = [[UITextField alloc] initWithFrame:CGRectMake(130.0, 39.0, 145.0, 31.0)];//初始化輸入框 

field1.keyboardType = UIKeyboardTypeNumbersAndPunctuation;    //鍵盤類型 

field1.borderStyle = UITextBorderStyleRoundedRect;  

field1.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

 

field2 = [[UITextField alloc] initWithFrame:CGRectMake(130.0, 82.0, 145.0, 31.0)]; 

field2.borderStyle = UITextBorderStyleRoundedRect; 

field2.enabled = NO; 

field2.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

 

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(42.0, 43.0, 90.0, 21.0)];//初始化UILabel 

label1.text = @"華氏溫度:"; 

label1.textColor = [UIColor greenColor]; 

label1.backgroundColor = [UIColor clearColor]; 

 

UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(42.0, 87.0, 90.0, 21.0)]; 

label2.text = @"攝氏溫度:"; 

label2.textColor = [UIColor greenColor]; 

label2.backgroundColor = [UIColor clearColor]; 

 

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];//初始化UIButton 

btn.frame = CGRectMake(124.0, 142.0, 72.0, 37.0); 

[btn setTitle:@"轉換" forState:UIControlStateNormal]; 

[btn addTarget:self              //設定點擊響應事件 

           action:@selector(convert:) 

 forControlEvents:UIControlEventTouchUpInside]; 

 

//將以初始化的控制項加入到視圖 

[bgImageView addSubview:field1]; 

[bgImageView addSubview:field2]; 

[bgImageView addSubview:label1]; 

[bgImageView addSubview:label2]; 

[bgImageView addSubview:btn]; 

 

[field1 release]; 

[field2 release]; 

[label1 release]; 

[label2 release]; 

//設定title 

self.title = @"Converter";  

 

第三步:建立委託類

 

        點擊main.m檔案在裡面輸入如下代碼

 

#import <UIKit/UIKit.h> 

#import "RootViewController.h" 

 

@interface HelloWorld2AppDelegate : NSObject <UIApplicationDelegate>  

@end 

 

@implementation HelloWorld2AppDelegate 

 

- (void)applicationDidFinishLaunching:(UIApplication *)application 

    RootViewController *rootView = [[RootViewController alloc] init]; //建立視圖 

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:rootView]; 

    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    [window addSubview:nav.view]; 

         

    [window makeKeyAndVisible]; 

 

@end 

int main(int argc, char *argv[]) 

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

    int retVal = UIApplicationMain(argc, argv, nil, @"HelloWorld2AppDelegate"); 

    [pool release]; 

    return retVal; 

}   

4.編譯運行程式

 

這樣,一個完全手動建立視圖的溫度轉換器,新鮮出爐啦。雖然相比較自動累了點,但是你也瞭解了如何建立控制項,如何在建立視圖,如何將視圖現實出來等等,也對Cocoa Touch的控制項響應屬性方法熟悉了點,對於新手來說,是不是一種收穫呢?

其實還可以半自動半手動,比如建立控制項的那部分完全可以自動完成,下篇文章將會分享一下如何半自動半手動的構建介面檔案。

 

原創文章,轉載請保留此欄位出處:http://blog.csdn.net/everpenny/article/details/6892008

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.