2014-12-16 2 views
5

Я создал UIView в Раскадке, которая должна быть центрирована именно в центре контроллера View с автоматической компоновкой и отлично работает в разных размерах устройства. Я называю это largerView.Выровняйте программно созданный центр UIView с центром вида автомакета

Однако, я хотел бы программно создать меньший UIView называется smallerView и центр этот вид, так что .

Я бегу на вопрос где, учитывая, что автоматическая раскладка используется на largerView всякий раз, когда я использую метод выше, мой smallerView никогда на самом деле центры с largerView.center. Я заметил, что он примет центральные координаты largerView, как они появляются в Storyboard, на основе конкретного макета устройства, которое я использую (в данном случае, для предыдущих размеров iPhone 5), но не для обновленного центра, поскольку это связано с автоматическим расположением ,

Аналогичная проблема может быть discussed здесь, за исключением того, что она основана на Swift. Я знаю, как ограничения создаются программно, но я не уверен, как получить «обновленные» координаты представления после автоматического макета.

Спасибо!

ответ

8

Вам необходимо переопределить следующий метод в контроллере представления:

- (void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    self.smallView.frame.center = self.largeView.frame.center; 
} 
+0

Отлично, это сделал трюк! благодаря – daspianist

7

Если smallerView является подтаблицей из largerView:

self.smallerView.center = CGPointMake(self.largerView.frame.size.width/2, self.largerView.frame.size.height/2); 

Если smallerView имеет такое же SuperView как largerView:

self.smallerView.center = self.largerView.center; 
Смежные вопросы