2013-04-03 35 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