Загрузка UIView разделяет на подклассы от проблем размера NIB

У меня есть подкласс UIView, который должен, вычисляет, это - высота согласно, он - ширина. При создании в коде все работает. Однако, когда я пытаюсь создать представление в Интерфейсном разработчике, и хотя я переопределяю все связанные методы, я не могу получить размер набора представления в интерфейсном разработчике.

- (id)initWithCoder:(NSCoder *)aDecoder
{
    NSLog(@"init with coder before super width %d",super.frame.size.width); // returns 0
    self = [super initWithCoder:aDecoder];
    NSLog(@"init with coder after super width %d",super.frame.size.width); // still returns 0
}

- (void) awakeFromNib
{
      NSLog(@"width of view %d",super.frame.size.width); // Returns 0 as well
}

- (void) setFrame:(CGRect)aFrame
{
    [super setFrame:aFrame]; // Called from initWithCoder by super. Correct frame size. 
}  

Таким образом, мое следующее предположение было, возможно, суперпредставление моего представления устанавливает кадр моего представления после awakeFromNib. Хорошо оказывается, что это не делает. Я overrided setFrame на моем представлении, и это называют во время initWithCoder.

Таким образом, это - то, что я знаю до сих пор:

  1. Первый initWithCoder называют
  2. Во время initWithCoder вызов к setFrame: (CGRect) aFrame отправляется
  3. в setFrame размер кадра корректен, и я называю [супер setFrame:aFrame]
  4. awakeFromNib называют
  5. super.frame.size.width = 0 в awakeFromNib self.frame.size.width также 0
  6. Когда процесс сделан, кажется, что представление является несколькими пикселями ниже, где это, предполагают, чтобы быть, но я предполагаю, что мой код становится столь сосредоточенным с размерами, что это могло бы быть что-то, что я делаю.

Любая справка будет цениться

12
задан Ron Srebro 28 July 2010 в 10:40
поделиться