UIView установить кадр странность - PullRequest
0 голосов
/ 17 июня 2011

У меня есть следующий код:

    - (id)initWithFrame:(CGRect)frame  chapterNum:(int)newChapterNumber pageNum:(int)newPageNumber
    {
NSLog (@"Frame:x:%f y:%f width:%f height:%f",frame.origin.x,
                                             frame.origin.y,
                                             frame.size.width,
                                             frame.size.height);
self = [super initWithFrame:frame];
if (self) {
    NSLog (@"View Frame:x:%f y:%f width:%f height:%f",self.frame.origin.x,
           self.frame.origin.y,
           self.frame.size.width,
           self.frame.size.height);
    ......
    }

Я работаю на симуляторе (в ландшафтном режиме), когда я смотрю на результаты журналов консоли, которые я вижу:

2011-06-17 09: 17: 16.428 MyApp [16454: 207] Рамка: x: 0,000000 y: 0,000000 ширина: 128.000000 высота: 96.000000

2011-06-17 09: 17: 16.433 MyApp [16454: 207] Просмотр кадра: x: -64.000000 y: -48.000000 ширина: 128.000000 высота: 96.000000

Почему происхождение фрейма просмотра не совпадает с исходным фреймом, который я использую, стоит отметить, что значение составляет ровно половину переменных размера (плюс знак -). Любая помощь очень ценится!

1 Ответ

2 голосов
/ 17 июня 2011

Во-первых (и не имеет ничего общего с проблемой, а только со стилем), используйте NSStringFromCGRect вместо того, чтобы распечатывать его самостоятельно.

NSLog(@"frame = %@", NSStringFromCGRect(frame));
....
if(...) {
    NSLog(@"self.frame = %@", NSStringFromCGRect(self.frame));
}

Какое представление является вашим суперклассом?Это универсальный UIView или один из ваших решений?В вашем методе initWithFrame: нет ничего до ....?

Значение того, что половина вашей ширины и роста становится новым источником, состоит в том, что ваш взгляд переместился на center в 0,0.Не уверен, почему это так, поэтому вопрос о вашем суперклассе.

Для получения дополнительной информации см. Документы здесь и посмотрите документы для свойства center.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...