2017-04-03 5 views
1

私は2つのラベルがあります説明ラベル(赤背景/ W)との結果ラベル(灰色のテキストを)私は結果のラベルを持っているために、この例の制約を設定するにはどうすればよい2つのラベルの位置合わせとその制約

結果の先頭に至るまでの内容と説明ラベルの大きさでアンカー?

example

のObjective C

[self.customTextLabel.trailingAnchor constraintLessThanOrEqualToAnchor:self.counterLabel.leadingAnchor].active = YES; 
[self.counterLabel.widthAnchor constraintGreaterThanOrEqualToConstant:0].active = YES; 

迅速

titleLabel.trailingAnchor.constraint(lessThanOrEqualTo: counterLabel.leadingAnchor).isActive = true 
counterLabel.widthAnchor.constraint(greaterThanOrEqualToConstant: 0).isActive = true 

(私は2番目の行に持っているように)私はそれが醜いだと思うのソリューションを持っています。

self.counterLabelWidthConstraint.constant = [self.counterLabel sizeThatFits:CGSizeMake(CGFLOAT_MAX, self.counterLabel.height)].width; 

答えて

3

自動レイアウトでこれを行う方法は2つのラベルのcontentCompressionResistancePriorityを使用することです。 2番目のラベルの場合はプリフライトをNSLayoutPriorityRequiredに設定し、最初のラベルの場合はNSLayoutPriorityDefaultLowのように低く設定します。次に、2つのラベルにスーパービューや相互に固定するための適切な制約がある限り、第1のラベルは圧縮し、第2のラベルは圧縮すべきではありません。

+0

それは私が探していたものです! – offcourse

+0

Awww来る - しかし私はDimaの前に50秒答えた! ;) – Stonz2

-1

あなたはストーリーボード自体での制約を設定することができます。私は、テキストを設定

self.counterLabelWidthConstraint = [self.counterLabel.widthAnchor constraintEqualToConstant:0]; 
self.counterLabelWidthConstraint.active = YES; 

そして後。ラベル1(赤い背景)を選択すると、ラベルのスーパービューセットの幅は等制約になります。ラベル1を選択し、その幅の制約をダブルタップすると、結果ウィンドウからLable 1の幅がスーパービューに等しく、値定数が '1'であることが分かります。 「1」を0.7に変更します。

+0

私はパーセントを望んでいません。結果のコンテンツのサイズに依存します。とにかくありがとう – offcourse

2

右/灰色のラベルの水平方向の圧縮抵抗を、左/赤のラベルの水平方向の圧縮抵抗よりも高くする必要があります。これはビジュアルレイアウトに、両方のラベルに十分なスペースがない場合、右側のラベルを縮小する前に左側のラベルが圧縮されることを示します。 750はすべてのビューのデフォルトですので、右/グレーのラベルの水平方向の圧縮抵抗を751に増やすだけでよいです。

enter image description here

関連する問題