У меня огромные проблемы с изучением автомакета, особенно при интеграции xibs и uiscrollviews. Пытаясь упростить свою проблему, я начал новый проект с одним представлением, привязанным к раскадровке. Затем я создал подкласс UIView (Diptic
) и создал для него xib-файл. Моя раскадровка не использует автомакет, но мой Diptic xib использует. Прямо сейчас я хочу иметь горизонтальный scrollView с несколькими экземплярами Diptic, расположенными поперек него. Но я получаю только первый диптический экземпляр, потому что фрейм неправильно инициализируется.
В моем ViewController.m viewDidLoad:
self.scrollView.contentSize = CGSizeMake((self.view.frame.size.width+10)*5, self.view.frame.size.height);
for (int i = 0; i < 5; i++){
int x = i*(self.view.frame.size.width+10);
Diptic *diptic = [[Diptic alloc] initWithFrame:CGRectMake(x, 50, self.view.frame.size.width, self.view.frame.size.height-100)];
[self.scrollView addSubview:diptic];
[array addObject:diptic];
UIView *greenBox = [[UIView alloc] initWithFrame:CGRectMake(x, 5, 40, 40)];
greenBox.backgroundColor = [UIColor greenColor];
[self.scrollView addSubview:greenBox];
}
Диптик.м
#import "Diptic.h"
@implementation Diptic
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"Diptic" owner:nil options:nil];
self = [views objectAtIndex:0];
self.label.text = @"WOOT";
self.backgroundColor = [UIColor redColor];
}
return self;
}
@end
Если я устанавливаю рамку после того, как добавляю ее в представление, кажется, что она работает, но почему я не могу установить рамку с помощью initWithFrame
?