2015-03-02 3 views
0

У меня есть UIView (названный FWD2), который добавляется в качестве подвида из в UIView (названного fwd1), и это UIView добавляются как подвид в a UIViewController(LoginView Controller). And on the click of of proceed button on fwd1 the fwd2 view is opened.And I'm creating Uiview programitically .UIView (fwd1) имеет динамическую высоту и UIView (Fwd2) имеет фиксированную высоту. Теперь я хочу как UIView (fwd1 & fwd2), так и в UIViewController (контроллер LoginView). Мой первый UIView (fwd1) центрируется на UIViewController, но второй UIView (fwd2) не центрируется. Я использовалUIView подтаблица другого UIView, который подтаблица из UIViewController, не получая с центром в UIViewController в прошивкой

fwd1.center = self.view.center; 

, и я также пытался

fwd1.center = [self.view convertPoint:self.view.center 
fromView:self.view.superview]; 

Я сделал то же самое со вторым UIView т.е. FWD2, но мой второй UIView т.е. FWD2 не получает по центру к UIViewController. Заранее спасибо.

+1

Если вы хотите центрировать fwd2, почему вы устанавливаете центр fwd2? На боковой ноте: Возможно, вы захотите использовать автоматический макет. Используя автоматическую компоновку, вы можете применять ограничения, такие как центр в контейнере и т. Д. Вот автомат макета: http: //www.raywenderlich.com/50317/begin-auto-layout-tutorial-in-ios-7-part-1 – Taha

+0

Я следил за обоими сценариями ... в следующий раз я не установил центр fwd2 .. но не получится и не получится был таким же ... – adi012

+0

Я хочу, чтобы это было сделано без использования AutoLayout .... plz help .. – adi012

ответ

1

В соответствии с комментарием резьбы создателя этого, решил свою проблему:

В какой функции вы пишете этот код? Вы можете попробовать в

- viewWillLayoutSubviews

И НЕ забудьте вызвать реализацию суперкласса в. Также сначала вам нужно центрировать fwd1, а затем fwd2.

fwd1.center = [self.view convertPoint:self.view.center fromView:self.view.superview]; 
fwd2.center = [fwd1 convertPoint:fwd1.center fromView:fwd1.superview]; 
0

Ваш fwd2 является подзадачей fwd1, а fwd1 является подпунктом UIViewController. Так что вам нужно, как показано ниже

сначала сделать по центру выровнять fwd1 к UIViewController

[fwd1 setCenter:[[self view] center]]; 

Затем сделайте FWD2 по центру Выровнять по fwd1

[fwd2 setCenter:[fwd1 center]]; 
+1

Не обязательно правильно. Центр self.view находится в координатах окна пользовательского интерфейса, а не self.view. Аналогично, центр fwd1 находится в координатах self.view, а не в координатах fwd1. – Taha

+0

@ Tapas, я уже это сделал ... но это не дает решения ... fwd2 появляется на углу .... – adi012

1

Вы поместите код в нужном месте?

Этот код обычно должен указывать на viewDidLayoutSubviews UIViewController.

fwd1 Сделать центрированный в UIViewController:

fwd1.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds)); 

Затем сделайте fwd2 с центром в fwd1, что означает fwd2 следует также сосредоточены в UIViewController (они имеют один и тот же центр по отношению к UIWindow).

fwd2.center = CGPointMake(CGRectGetMidX(fwd1.bounds), CGRectGetMidY(fwd1.bounds)); 

EDIT: Благодаря комментарий, я исправить код.

+0

Исправление: я думаю, что привязка fwd1 должна использоваться при настройке центра fwd2. – Taha

+0

x координата fwd2 центрирована, но координата y изменяется с переменной высотой fwd1, когда я использую метод центра только для fwd1, а не для fwd2. – adi012

+0

Вы должны перерасчитать центр 'fwd2', чтобы получить новое значение, когда вы изменяете высоту' fwd1', чтобы 'fwd2' находился в центре' fwd1'. @AdityaYadav – liushuaikobe

Смежные вопросы