Вы говорите, что вы не хотите использовать XIB и хотите, чтобы сделать все это программно.
Вы должны реализовать initWithFrame:
метод:
- (id)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame])) {
// create/initialize your subviews here
self.myLabel = [[UILabel alloc] init...];
// configure the label
self.myLabel.font = ...;
self.myLabel.autoresizingMask = ...;
[self addSubview:self.myLabel];
}
return self;
}
Таким образом, вы создать и настроить элементы управления (шрифты, цвета, маски и т.д. автоматического изменения) и добавить их в качестве подвидов, все из метода initWithFrame:
. Вероятно, вы захотите разбить код на разные методы, чтобы сохранить чистоту.
Если вы используете автозапуск, вы также хотите создать все свои ограничения из метода init.
Если вы используете не, используя autolayout, вы должны реализовать метод -layoutSubviews
. Это будет называться в подходящее время, чтобы макет вашего подвидов (например, когда кадр ваших изменений зрения):
- (void)layoutSubviews
{
self.myLabel.frame = ...;
}
От метода layoutSubviews
вы можете получить доступ к self.bounds
, чтобы выяснить размер представления в то время. Это позволит вам узнать, сколько ширины/высоты вы должны выровнять или правильно перенести.
Когда дело доходит до создания экземпляра вашего вида, просто используйте [[MyCustomView alloc] init]
(который вызовет с пустым прямоугольником) или [[MyCustomView alloc] initWithFrame:...]
.Установите его рамку и добавьте ее в некоторый вид. Метод layoutSubviews
будет вызываться во все соответствующие моменты времени, и он будет уложен соответствующим образом.
Этот вопрос слишком широк для простого вопроса QA. Пройдите через книгу, которая охватывает все программно. – bryanmac
пройти через любую базовую учебную книгу. это самая основная вещь – iProgrammer
@Ezimettekin Вы хотите создать пользовательский вид в уже существующем классе или хотите создать класс UIView с файлом nib – Vishnu