UIView setCenter проблема - PullRequest
       12

UIView setCenter проблема

4 голосов
/ 18 марта 2011

У меня много проблем, когда я делаю что-то очень простое.У меня есть viewController и subViewController, оба с представлениями, загруженными из перьев.Для пояснения родительский вид имеет размеры 1024 на 748, а вспомогательный вид - 640 на 480 в кончиках.

В viewDidLoad viewController я добавляю представление subViewController следующим образом:

[self.view addSubview:self.subViewController.view];
NSLog(@"subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));

Вывод журнала:

subview.frame:{{0, 0}, {640, 480}}

Затем, просто для проверки, я используюsetCenter, чтобы попытаться переместить подпредставление в родительском представлении в ту же позицию, например так:

CGPoint newCenter = CGPointMake(0,0);  //should stay at the same position..
[self.subViewController.view setCenter:newCenter];
NSLog(@"after changing center.subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));

Вывод журнала:

after changing center. subview.frame:{{-320, -240}, {640, 480}}

Теперь у меня есть ощущение, что что-то может получатьсяоблажался в кончиках, и я предполагаю, что это как-то связано с параметрами пружин и распорок / размера и положения.Я могу только догадываться, что это так, потому что это функция, которую я меньше всего понимаю, когда дело доходит до IB.

Есть другие идеи относительно того, что может быть причиной этой проблемы?Ребята, есть ли у вас какие-либо советы по настройке представлений viewcontrollers в IB, чтобы они автоматически располагались в соответствии с представлениями других viewcontrollers?И после того, как все настроено, правильно ли настроен центр для их динамического перемещения?

Ответы [ 2 ]

6 голосов
/ 18 марта 2011

Выводы правильные, учитывая то, что вы делаете.Точка (0,0) является верхним левым углом.Если вы установите центр подпредставления для этого, то верхний левый угол подпредставления будет действительно (-640/2, -480/2).

Чтобы выровнять верхние левые углы, используйте

[self.subViewController.view setCenter:CGPointMake(320.0,240.0)];
0 голосов
/ 18 марта 2011

Проблема неясна. Если вы установите центр в 0,0, то вы должны ожидать, что начало кадра будет равно -320, -240, как кажется. Возможно, вы неправильно поняли CGRect? CGRect состоит из происхождения и размера. Рамка - это CGRect. Кадр, размер и центр связаны между собой, и изменение кадра меняет размер и центр, а изменение центра меняет кадр.

...