【发布时间】:2011-02-23 18:31:18
【问题描述】:
我正在使用 IB 设计一个特定的按钮(带有一些标签,以及 imageView 和其他东西)。
然后我想在另一个 xib 中使用该 xib 对象(按钮),我有该按钮的 6 个对象。
我知道我可以使用类标识符以编程方式做到这一点,但是我必须定位我的标签和图像视图,并在代码中设置默认值和其他所有内容。
我想知道是否可以仅使用 IB 来做同样的事情? (当然我仍然会在代码中设置值,但我想在 xib 中设置标签/图像视图的位置以及所有其余部分)
谢谢
编辑
所以,我知道我最初要求的内容是不可能的。 我现在正在尝试的是这样的:
我创建了一个ButtonTest.xib。
在 Xib 内部,我有一个 UIView 和 3 个子视图(2 个标签和一个按钮)。
在检查器中,我将 UIView 类设置为ButtonTest。
在 ButtonTest.m 中,每个子视图都有 3 个出口,我在 IB 中连接它们。
接下来我有一个ButtonTestViewController.xib。
在其中我放了一个视图并将其在检查器中的类设置为ButtonTest。
我将该视图连接到 ButtonTestViewController.m 类 ButtonTest 内的 myTextView 插座
现在,这是 ButtonTestViewController.m viewDidLoad 中的代码:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"ButtonTest" owner:nil options:nil];
ButtonTest *mainView = (ButtonTest*)[subviewArray objectAtIndex:0];
self.myTextView = mainView;
}
我希望会发生的是,ButtonTestViewController.xib 中的视图会变成我在 ButtonTest.xib 中设计的视图。 这只是没有发生。发生的情况是 ButtonTestViewController.xib 中的视图保持不变。
值得一提的是,如果我添加:
[self.view addSubview:mainView];
除了现有视图之外,它确实添加了新视图。
知道如何做我想做的事吗?
最终我希望在ButtonTestViewController.xib 中有 6 个视图,看起来都像 ButtonTest.xib 模板,并且标签值将在代码中设置。
编辑2
好吧,伙计们,我照你说的做了,而且效果很好。
我现在遇到的唯一问题是ButtonTestViewController.xib 中的视图比ButtonTest.xib 中的视图大一点。
发生这种情况时,按钮上的标签看起来非常模糊。
当它们的大小相同时,一切都很好。
@ Ned - 我使用了您在 InitWithCoder 方法中发布的确切代码,但我将框架语句切换为:
self.bounds = mainView.frame;
我尝试在 IB 中使用内容模式尝试修复它,但无济于事。
当我像你发布的那样使用它时,意思是:
mainView.frame = self.bounds;
它根本不起作用,两个视图的大小保持不变。 在这里我尝试使用 resizeMask 但仍然没有工作。
想知道如何解决这两个问题? 谢谢大家!
编辑 3
我确实设法解决了其中一个问题,将ButtonTestViewController.xib 调整为ButtonTest.xib 视图大小。
这就是我所做的(使用代码解决模糊问题,取自here)
self.bounds = CGRectMake(0, 0, mainView.frame.size.width, mainView.frame.size.height);
CGRect overlay2Frame = self.frame;
overlay2Frame.origin.x = round(overlay2Frame.origin.x);
overlay2Frame.origin.y = round(overlay2Frame.origin.y);
self.frame = overlay2Frame;
另一个我仍然无法解决的问题。 ButtonTest.xib 中的视图不会变得更大以匹配其他视图。
【问题讨论】:
标签: iphone objective-c cocoa-touch interface-builder uibutton