我正在一个应用程序上工作,使用许多相同大小的UIView,具有相同的两个标签(尽管在标签中有不同的文本),我想我应该在这里使用一些抽象,并使一个内置标签的UIView子类。
我需要类创建相同大小的视图,并在该视图的相同位置有两个标签。如果我能把视图的角做成圆角,就能加分。
我该怎么做呢?
分阶段进行。首先创建您自己的自定义UIView
类。也许设置背景颜色,这样你就可以设置它了。更新代码以使用此自定义视图。
一旦完成并起作用,进入下一个级别。让自定义视图创建两个标签并将它们添加到自身。从标签中的硬编码文本开始。玩周围得到大小和位置正确。这可以通过适当的帧大小和autoresizingMask
值来完成,或者您可以覆盖layoutSubviews
方法来手动定位和大小标签。
一旦工作,更新类以提供允许该类用户设置两个标签的文本的属性或方法。
最后,设置视图的图层,使其使用圆角和可能的边框。
把这样的问题分解成小步骤可以让你把每一个小步骤都处理好。不要试图一次把所有的代码都写出来,然后试图找出为什么它不起作用。
这也允许你问更详细的问题,如果你卡住了。或者更好的是,它缩小了你的关注范围,这样你就可以阅读文档并搜索处理某个细节的相关示例,而不是整个问题。
当我必须在几个地方重用视图时,我为它创建了一个带有.xib文件的自定义UIView(使用.xib文件设置UI非常容易),我创建了一个方法来加载nib并创建该类的新实例。我还为它提供了额外的设置方法,因此在您的示例中,我将创建如下内容:
- 一个子类的UIView与。xib文件,我会添加两个标签在所需的位置。
- 为第二个标签创建
@propertie(nonatomic, weak) IBOutlet UILabel *fitstLabel;
和1。(链接出口时要小心(链接到视图而不是文件的所有者)) 创建一个
+(YourViewName*)instantiateViews;
方法或任何你想叫它的方法,并在实现中这样做:+(YourViewName *)instatiateViews {NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"TheXibFileName" owner:nil option:nil];return [views objectAtIndex:0];}
根据需要添加其他设置方法
对于视图的圆角,你必须设置为#import <QuartzCore/QuartzCore.h>
,你可以创建一个方法,如:
-(void)setViewsRoundedCornersWithCornerRadius:(CGFloat)radius {
self.layer.cornerRadius = radius;
}
现在,当你想要这个自定义视图的新实例时,你只需要调用:
YourViewName *customView = [YourViewName instantiateViews];
之后,你可以调用所有的设置方法。