Я проектирую, используя IB конкретную кнопку (с некоторыми надписями, imageView и другими вещами).
Тогда я бы хотел использовать этот объект (кнопку) xib в другой xib, где у меня есть6 объектов этой кнопки.
Я знаю, что могу сделать это программно, используя Идентификатор класса, но затем мне нужно расположить свои метки и вид изображения, а также установить значения по умолчанию и все остальное в коде.
Мне интересно, возможно ли сделать то же самое, используя только IB?(конечно, я все равно установил бы значения в коде, но я хочу, чтобы позиции lables / imageView и все остальные были установлены в xib)
Спасибо
Редактировать
Итак, я понимаю, что то, о чем я просил сначала, невозможно.То, что я сейчас пытаюсь сделать, таково:
Я создал ButtonTest.xib
.Внутри Xib у меня есть UIView и 3 подпредставления (2 ярлыка и кнопка).В инспекторе я установил класс UIView на ButtonTest
.Внутри ButtonTest.m у меня есть 3 выхода для каждого из подпредставлений, которые я подключаю в IB.
Далее у меня есть ButtonTestViewController.xib
.Внутри я поместил один вид и установил его класс в инспекторе равным ButtonTest
.Я подключаю это представление к myTextView
розетке внутри ButtonTestViewController.m
класса ButtonTest
Теперь это код внутри 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];
Он добавляет новое представление, помимо существующего.
Есть идеи, как сделать то, что я хочу?
В конечном итоге мне бы хотелось иметь 6 представлений в ButtonTestViewController.xib
, все будет выглядеть как шаблон ButtonTest.xib, а значения lables будутустановите код.
Edit2
Хорошо, ребята, я сделал все, что вы сказали, и это сработало как шарм.Единственная проблема, с которой я сталкиваюсь сейчас, - это когда ButtonTestViewController.xib
немного больше, чем ButtonTest.xib
.Когда это происходит, ярлык на кнопке выглядит очень размытым.Когда они оба имеют одинаковый размер, это все хорошо.
@ Нед - я использовал точный код, который вы разместили в моем методе InitWithCoder, за исключением того, что я переключил предложение кадра на это:
self.bounds = mainView.frame;
Я пытался поиграть с режимом контента в IB, пытаясь это исправить, но безрезультатно.
Когда я использую его, как вы написали, это означает:
mainView.frame = self.bounds;
Это вообще не работаети размеры обоих видов остаются неизменными.Здесь я попытался поиграть с resizeMask, но все равно не сработало.
И идея, как исправить эти 2 проблемы?Спасибо, ребята!
Редактировать 3
Мне удалось исправить одну из проблем, изменив размер ButtonTestViewController.xib
до размера ButtonTest.xib
.Это то, что я сделал (используя код для решения размытой проблемы, взятый из здесь )
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 просто не станет больше, чтобы соответствовать другому представлению.