子类UIView有两个标签



我正在一个应用程序上工作,使用许多相同大小的UIView,具有相同的两个标签(尽管在标签中有不同的文本),我想我应该在这里使用一些抽象,并使一个内置标签的UIView子类。

我需要类创建相同大小的视图,并在该视图的相同位置有两个标签。如果我能把视图的角做成圆角,就能加分。

我该怎么做呢?

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

一旦完成并起作用,进入下一个级别。让自定义视图创建两个标签并将它们添加到自身。从标签中的硬编码文本开始。玩周围得到大小和位置正确。这可以通过适当的帧大小和autoresizingMask值来完成,或者您可以覆盖layoutSubviews方法来手动定位和大小标签。

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

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

把这样的问题分解成小步骤可以让你把每一个小步骤都处理好。不要试图一次把所有的代码都写出来,然后试图找出为什么它不起作用。

这也允许你问更详细的问题,如果你卡住了。或者更好的是,它缩小了你的关注范围,这样你就可以阅读文档并搜索处理某个细节的相关示例,而不是整个问题。

当我必须在几个地方重用视图时,我为它创建了一个带有.xib文件的自定义UIView(使用.xib文件设置UI非常容易),我创建了一个方法来加载nib并创建该类的新实例。我还为它提供了额外的设置方法,因此在您的示例中,我将创建如下内容:

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

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

  3. 根据需要添加其他设置方法

对于视图的圆角,你必须设置为#import <QuartzCore/QuartzCore.h>,你可以创建一个方法,如:

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

现在,当你想要这个自定义视图的新实例时,你只需要调用:

YourViewName *customView = [YourViewName instantiateViews];

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

最新更新