2013-07-05 43 views
2

我在使用界面生成器创建的UIViewController内有UIView。我想在我的应用程序中共享并重复使用UIViewUIView将始终具有相同的设计,只会更改其数据。如何在故事板应用程序中共享一个UIView

我已经知道:

  • 我可以建立UIView的代码,并将其重新添加到每个UIViewController - 不是为我一个解决方案,我想使用接口生成器来创建UIView的。

  • 我可以使用外部厦门国际银行像在暗示这个答案:https://stackoverflow.com/a/11444019/1578927 我想它和它的作品很好,但我不知道,是不是有重用在我的故事板的应用程序一个UIView一个更好的解决方案?也许没有使用xib?我对上面的解决方案投了赞成票,但感觉还不错。

感谢

回答

0

没有办法,你可以用故事板重用一个UIView,你需要做的是子类的UIView [说我们把它命名到CustomView]和(无效)awakeFromNib方法,你可以addSubViews并做设计的东西,设置背景颜色为UIView。

你可以在故事板中使用这个子类,重用它来为你想要的任何UIViewController渲染相同的UIView,你必须在UIViewController的UIView的IdentityInspector中将类从UIView设置为CustomView。

示例自定义UIView类

#import "CustomView.h" 

@implementation CustomView 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 

    UIImage *bgImage = [[UIImage imageNamed:@"bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(20.0, 0.0, 20.0, 0.0)]; 

    UIImageView *bgImageView; 

    bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, viewHeight(self))]; 

    [bgImageView setImage:bgImage]; 

    [self addSubview:bgImageView];  
} 


/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
} 
*/ 

@end 
+0

阅读我的问题中的第一个*。我正在寻找一种方法来做到这一点,仍然使用接口生成器 – Segev

+0

设计'UIView'我想出来了,而不是使用awakeFromNib,你可以为CustomView添加一个nib文件。然后在相应UIViewController的文件检查器中使用此CustomView类而不是UIView http://i40.tinypic.com/a9widx.jpg – Say2Manuj

+0

这是我的问题中的第二个*。你应该花时间仔细阅读问题。 – Segev

0

这是不可能的。 storyBoard由xib(nib)文件组成。您在storyBoard中制作的自定义视图将成为xib文件。你不能“不”使用xib文件,或者“不”使用xib文件,因为这是你唯一的两种选择。如你所提供的例子那样使用外部xib将是你最好的选择。

相关问题