我有三个观点有几个相似之处。例如,位置30,30处的UIImageView和位于相同位置的三个UILabel。
没有复制和粘贴或冗余代码,最好的解决方法是什么?
当我使用笔尖创建所有三个视图时,我必须复制并粘贴相同的部分......
我开始实现自己的UIViewController和基础UIView。我的代码如下所示:
- (id)init {
if((self = [super init])) {
image = [[UIImageView alloc] init];
header = [[UILabel alloc] init];
[self addSubview:image];
[self addSubview:header];
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
image.frame = CGRectMake(30, 30, 20, 20);
header.frame = CGRectMake(30, 100, 200, 30);
}
当我将具有该视图的控制器推入堆栈时,视图显示错误。图像和标签由titleheader(navigationcontroller)...
覆盖有人可以解释一下这个布局系统是如何运作的... ios sdk是我用过的最糟糕的sdk :(
答案 0 :(得分:0)
在笔尖中创建视图时,我没有看到复制和粘贴的必要性?它肯定消除了为每个代码定位视图的必要性。而且除了评论之外:通常情况下,“最差”的sdks是我们不太了解的那些。
如果他们需要一套共同的内务管理代码,那么就会将一个视图作为一个参数并在不违反DRY原则的情况下进行操作(不要重复自己)
答案 1 :(得分:0)
当我使用a创建所有三个视图时 笔尖我必须复制并粘贴相同的 份...
你是否意识到,像一个视图控制器这样的对象加载多个笔尖是可能的 - 简单,甚至是简单的?所有三个视图控制器都可以从同一个nib文件加载接口的公共部分,并从自己的nib文件加载自己的接口。一种方法是将公共接口的插座放在一个类中,以及管理公共接口所需的任何代码(设置,操作等)。然后,您可以为每个不同的视图控制器创建该类的子类,并让每个子类加载自己的nib。最后一步是将子类中的接口插入到超类的视图层次结构中,或者将超类中的接口插入到子类的视图层次结构中,无论哪种情况都适用于您的情况。