子类UIView有两个标签

时间:2013-05-17 19:56:46

标签: ios class uiview label subclass

我正在开发一个使用相同大小的UIViews的应用程序,使用相同的两个标签(尽管标签中有不同的文本),我想我应该在这里使用一些抽象并使用标签创建一个UIView子类内置。

我需要该类在该视图中的同一位置创建相同大小的视图和两个标签。如果我可以围绕视图的角落加分。

我将如何做到这一点?

2 个答案:

答案 0 :(得分:1)

分阶段进行。首先创建自己的自定义UIView类。也许设置背景颜色,以便您可以设置它。更新您的代码以使用此自定义视图。

一旦完成并正常工作,请进入下一个级别。让自定义视图创建两个标签并将其添加到自身。从标签中的硬编码文本开始。玩弄大小和位置正确。这可以通过适当的框架大小和autoresizingMask值来完成,也可以覆盖layoutSubviews方法来手动定位和调整标签大小。

一旦有效,请更新该类以提供允许此类用户设置两个标签文本的属性或方法。

最后,设置视图的图层,使其使用圆角和边框。

将这样的问题分解成小步骤可以使每个小工作都能正常工作。不要试图一次编写所有代码,然后试着弄清楚它为什么不起作用。

如果您遇到问题,这也可以让您提出更详细的问题。或者更好的是,它缩小了您的注意力,因此您可以阅读文档并搜索处理该详细信息而不是整个问题的相关示例。

答案 1 :(得分:1)

当我必须在几个地方重用一个视图时我会做什么我创建一个带有.xib文件的自定义UIView(用.xib文件设置UI非常容易)我创建了一个加载方法的方法nib并创建该类的新实例。我还为它提供了额外的设置方法,所以在你的情况下我会创建类似的东西:

  1. UIView的子类,带有.xib文件,我会在所需位置添加两个标签。
  2. 为第二个标签创建@propertie(nonatomic, weak) IBOutlet UILabel *fitstLabel;和一个。 (链接插座时要小心(将它们链接到视图而非文件所有者)
  3. 创建一个+(YourViewName*)instantiateViews;方法或任何你想要它的方法,并在实现中做类似的事情:

    +(YourViewName *)instatiateViews {     NSArray * views = [[NSBundle mainBundle] loadNibNamed:@“TheXibFileName”owner:nil option:nil];     return [views objectAtIndex:0]; }

  4. 添加其他设置方法以满足您的需求。

  5. 对于视图的圆角,您必须#import <QuartzCore/QuartzCore.h>,然后您可以创建一个方法:

    -(void)setViewsRoundedCornersWithCornerRadius:(CGFloat)radius {
         self.layer.cornerRadius = radius;
    }
    

    现在,当您需要此自定义视图的新实例时,您只需调用:

    YourViewName *customView = [YourViewName instantiateViews];
    

    之后,您可以调用所有设置方法。