2015-08-03 2 views
1

У меня есть вид в iPad-приложении, который в полноэкранном режиме расширяется, чтобы заполнить весь экран и доступен как в портретной, так и в альбомной ориентации.iOS- Программно установите левое и правое поля подвыборок равными

Этот вид также содержит много подвид (например, прямоугольные карты) и scrollview.

[программно добавить их в представление контента, который создается программным способом (в представлении прокрутки) вычисляет размер кадра карты соответственно]

 contentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 640, 2000)]; 
[contentView addSubview:firstCard]; 


self.formScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 
self.formScrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 


self.formScrollView.scrollEnabled=true; 


self.scrollView addSubview:contentView]; 
self.scrollView.contentSize=contentView.frame.size; 

Мое требование заключается в том, что, несмотря на ориентацию всех карты были бы выровнены один за другим с равными пробелами как с левого, так и с правого края.

Карты, имеющие разную высоту, равны по ширине.

До сих пор это то, что я попытался установить в центре по горизонтали. Я добавил этот фрагмент кода в viewDidLayoutSubviews

[contentView addConstraint:[NSLayoutConstraint constraintWithItem:firstCard 
                 attribute:NSLayoutAttributeCenterX 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:contentView 
                 attribute:NSLayoutAttributeCenterX 
                multiplier:1.0 
                 constant:0.0]]; 

, где contentView относится к contentView в полном контроллере представления экрана и первая карта первая карта подтаблицы

Я также установить свойство

firstCard.translatesAutoresizingMaskIntoConstraints = NO; 

При запуске в симуляторе я получаю катастрофические результаты. Вид странно смещен, а другие карты разбросаны повсюду.

Этого не происходит, когда я не устанавливаю ограничения. Они выглядят уродливыми, но они по-прежнему вертикально выровнены так, как они должны быть.

Я довольно новичок в разработке авто и разработке iOS.

Я действительно задаюсь вопросом, связаны ли какие-либо из этих проблем с тем фактом, что мой contentView является фиксированным фреймом?

Я сохраняю contentView с такой фиксированной рамкой, имея в виду не полноэкранный режим.

Куда я иду не так? Я бы очень признателен за любую помощь и советы.

Спасибо.

EDIT: -

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

(Это было также бедствие, вид контента, даже не появляется на экране)

[self.formScrollView addConstraint:[NSLayoutConstraint constraintWithItem:contentView 
                         attribute:NSLayoutAttributeCenterX 
                         relatedBy:NSLayoutRelationEqual 
                         toItem:self.formScrollView 
                         attribute:NSLayoutAttributeCenterX 
                        multiplier:1.0 
                         constant:0.0]]; 

}

[где formScrollView является свиток View]

ответ

0

Вам также необходимо установить вертикальное ограничение для видов карт. В вашем случае «верх» каждого представления (начиная с первого взгляда) будет иметь отношение к «нижнему» представлению более раннего вида. Чтобы они падали друг за другом по вертикали. Можно добавить, как показано ниже.

float verticalSpacing = 20.0f; 

nextCard.translatesAutoresizingMaskIntoConstraints = NO; 

[contentView addConstraint:[NSLayoutConstraint constraintWithItem:nextCard 
                 attribute:NSLayoutAttributeCenterX 
                 relatedBy:NSLayoutRelationEqual 
                  toItem:contentView 
                 attribute:NSLayoutAttributeCenterX 
                 multiplier:1.0 
                 constant:0.0]]; 

[contentView addConstraint:[NSLayoutConstraint constraintWithItem:nextCard 
                 attribute:NSLayoutAttributeTop 
                 relatedBy:NSLayoutRelationEqual 
                  toItem:previousCard 
                 attribute:NSLayoutAttributeBottom 
                 multiplier:1.0 
                 constant:verticalSpacing]]; 
+0

Большое спасибо. Я буду учитывать это при добавлении карт в режим просмотра контента. Однако то, что я также хочу, это то, что мой контент-контент должен быть правильно центрирован. –

+0

Также я хочу добавить, что я понял, как получить contentView в центре ... Как и как я использовал маску autoresizing для прокруткиview contentView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; –

+0

Приятно слышать, что .. – Saroj

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