2013-04-03 62 views
2

我基本上是一名Android程序員,並且正在學習iOS平臺上的一些技巧。如何在iOS中創建此自定義UI

我有一個Android應用程序,它有它看起來像

this一個自定義UI組件。

我想爲我的樣品的iOS應用程序創建一個類似的可重複使用的UI組件。我無法獲得任何關於如何在iOS中執行此操作的線索。

在Android上,我可以使用佈局文件創建一個複合UI元素,但在iOS中我不確定是否可以創建複合UI元素或擴展UIView,然後佈局文本和圖像組件。

我正在尋找一些線索來實現這一點。我計劃在屏幕&上有這些組件的多個實例,這些值是從Web服務更新的。

回答

2

我在iOS中推薦一個名爲interface builder的東西。

這是在那裏你可以直觀的地方元素,用戶與之交互,你可以看到設計的外觀爲您的佈局結構的地方。

教程,你可以看看http://mobile.tutsplus.com/tutorials/iphone/interface-builder/ 或搜索了「廈門國際銀行的ios教程」

希望這有助於!

+0

閱讀本書後,我對IB的印象是,它用於創建整個應用程序窗口的佈局。我不確定我是否可以使用它來創建可重用的UI組件。 – prashant 2013-04-03 20:41:42

+0

這就是你幸運的地方! :) IB可用於構建UITableViewCells,custon子視圖中的圖像視圖,視圖上的自定義手勢以及更多全部內容。所有你需要做的是選擇正確的類從子類!坦率地說,當我需要快速定製一些東西,同時保持設計整潔時,它對我來說變成了一個寶貴的工具! :) – wayway 2013-04-03 20:43:38

+0

@prashant,不,您可以使用* Interface Builder *(現在是Xcode的一部分)來創建小的可重用視圖。在Inspector屬性中,只需將大小設置爲'freeform',然後指定所需的點大小(寬度和高度)即可。然後,你會有一些不是全屏的東西。 – Nate 2013-04-03 20:44:36

0

如果你希望它是一個簡單的觀點,那麼你可以創建一個UIView子類的幾個UITextFields的,可能一個的UIImageView或兩個都有網點,使您的控制器能夠進行更改。例如:

@interface StockInfo <UIView> 

@property (nonatomic, strong, readonly) UITextField *ticker; 
// You may want to make these numbers so that you can do calculations with them, and then update the text field automatically 
@property (nonatomic, strong, readonly) UITextField *price; 
@property (nonatomic, strong, readonly) UITextField *priceChange; 
// This could be automatically calculated based on the price and priceChange if appropriate 
// It could also automatically show the Up or Down indicator 
@property (nonatomic, strong, readonly) UITextField *percentChange; 

@end 

然後,控制器可以創建一個實例,並設置各種屬性:

StockInfo *djia = [[StockInfo alloc] init]; 
djia.ticker = @"DJIA"; 
djia.price = @"14550.35" ; 
djia.priceChange = @"-111.66"; 
// ... 

您可以創建視圖界面生成器內或者在實際的UI元素,或做在碼。該做什麼是一種個人喜好。在這種情況下,有兩個方面的優缺點,並且在這種情況下構建代碼視圖會非常容易,並且不要求您有兩個文件才能使用該控件。

+0

但在這種方法中,我如何實現圓角和UI元素的位置? – prashant 2013-04-04 02:55:17

+0

「這種方法」是否意味着如果不使用IB?奇怪的是,你根本無法繞過IB的角落,所以它無論如何都需要以編程方式完成。在這裏簡單的搜索將告訴你如何做到這一點。你可以通過設置它們的框架來定位UI元素,當你創建它們時(使用'UIView * myNewView = [[UIView alloc] initWithFrame:yourFrame];')或者在創建它們之後設置frame屬性。 – lnafziger 2013-04-04 03:49:50