Я использую xCode 6 и классы размеров для своего приложения.
Я встречаю очень странную проблему, которую я не понимаю.
У меня есть UIView, который ограничивает UIViewController, я устанавливаю ограничение ширины для класса размера Any x Any (150x150) и другое ограничение ширины для Regular x Regular (300x300).
Когда я регистрирую размер моего UIView, когда приложение работает на iPad, я сталкиваюсь с проблемой.
Действительно, в «viewWillAppear», «viewWillLayoutSubviews» или «viewDidLayoutSubviews» я получаю размер «150x150» вместо «300x300».
Мои журналы:
- (void) viewWillAppear:(BOOL)animated {
NSLog(@"viewWillAppear Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:YES];
NSLog(@"viewDidAppear Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}
- (void) viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
NSLog(@"viewWillLayoutSubviews Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"viewDidLayoutSubviews Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}
Что я не понимаю, так это то, что журналы показывают:
2015-02-17 09:29:38.984 myApp[660:42565] viewDidLoad Size
150.000000 - 150.000000
2015-02-17 09:29:38.985 myApp[660:42565] viewWillAppear Size
150.000000 - 150.000000
2015-02-17 09:29:39.047 myApp[660:42565] viewWillLayoutSubviews
Size 150.000000 - 150.000000
2015-02-17 09:29:39.058 myApp[660:42565] viewDidLayoutSubviews
Size 150.000000 - 150.000000
2015-02-17 09:29:39.063 myApp[660:42565] viewWillLayoutSubviews
Size 230.000000 - 230.000000
2015-02-17 09:29:39.063 myApp[660:42565] viewDidLayoutSubviews
Size 230.000000 - 230.000000
2015-02-17 09:29:39.586 myApp[660:42565] viewDidAppear Size
230.000000 - 230.000000
2015-02-17 09:29:39.591 myApp[660:42565] viewWillLayoutSubviews
Size 230.000000 - 230.000000
2015-02-17 09:29:39.593 myApp[660:42565] viewDidLayoutSubviews
Size 230.000000 - 230.000000
Так что же происходит? Почему в первый раз я получаю размер класса Any x Any size? И почему эти методы вызываются много раз?
Я вижу, что у меня есть правильный размер кадра в viewDidAppear, но мне это не нравится, потому что есть задержка перед вызовом этой функции. (Мне нужно что-то сделать с размером кадра моего представления, прежде чем показывать его....)
size
не является классом. Ваша проблема связана с ограничениями, а не со структурой размера. - person Hermann Klecker   schedule 17.02.2015UIView
ssize
как экземпляр класса, а просто использовал его для целей отладки, и вопрос связан сsize classes
, поскольку в IB настроено как минимум два из них, и они не не работает, как ожидалось. - person A-Live   schedule 17.02.2015