質問

私は次のようなプロジェクトを持っているとします。

ENTER IMENT Descriptionこちら

UIView - 1つはyellowBoxと呼ばれるものと呼ばれているredBoxという2つのものがあります。自動レイアウトの制約は、yellowBoxがSuperViewの上部から350ポイントの先頭と末尾のスペース(すなわち、ビューの左右)で60ポイントであることを指示します。 redBoxは、同じ先行および末尾のスペースの制約を持ちます。 yellowBoxの下部が常にredBoxの上に直接上に直接あるべきであることを示すために、0の2つのボックスの間に垂直方向のスペースの制約があります。

展開黄色ボックスの展開ボタンをタップすると、yellowBoxの高さが増加し、その結果、redBoxが垂直方向のスペースの制約を満たすように移動し続ける(yellowBoxが常に上にあります。 redBox)。これがアニメーションコードです:

- (IBAction)expandYellowBox:(id)sender {

    [UIView animateWithDuration:0.5
                     animations:^{
                         CGRect newFrame = self.yellowBox.frame;
                         newFrame.size.height += 50;
                         self.yellowBox.frame = newFrame;
                     }];

}
.

しかし、私はこれを正しく機能させることができませんでした。赤いアイコンで見ることができるように、現時点での制約に問題があります:

ENTER IMENT Descriptionこちら

自動レイアウトが箱の高さを知る方法はありません。しかし、ボックスをサイズ変更し移動させることができるようにこの問題を解決する方法はわかりません。たとえば、yellowBoxに高さ制約を指定した場合、それはそれがサイズ変更されないようにするでしょう。高さ制約を以上(yellowBoxの高さを増やすことができるようにするために)高さの制約を設定すると、異なる制約エラーが発生します。

Enter Image説明

ストーリーボード内のXcodeを使用してすべての制約が確立されています - コードではありません。

もっと歓迎されています。


編集:表示されたときにyellowBoxは、ボタンをクリックしたときに成長しています - redBoxの背後に表示されるのでわかりませんでした。私はそれを4回歩調をクリックした後にのみ気付いた。ただし、常にredBoxの下部に常に固執するようにredBoxを取得する方法と同じ質問が残ります。

役に立ちましたか?

解決

shwet-solanki に記載されているようにそれを試してくださいが、次の行を追加します。制約を変更した後:

[self.view layoutIfNeeded];
.

iBactionは次のようになります。

- (IBAction)expandYellowBox:(id)sender {

[UIView animateWithDuration:0.5
                 animations:^{
                     self.yellowBoxHeightConstraint.constant += 50;
                     [self.view layoutIfNeeded];
                 }];
}
.

yellowBoxHeightConstraintIBOutletの高さ制約のためのyellowBoxです。 お役に立てれば。

他のヒント

  1. Views
  2. の両方に高さ制約を追加
  3. yellowbox
  4. の高さ制約のためのiboutletを作成する
  5. ボタン押されたイベントのYellowBoxの高さを変更するのではなく、むしろ高さ制約の値を変更します。I.E iBoutletの制約名がyellowBoxHeightConstraint、次にyellowBoxHeightConstraint.constant += 50;
  6. の場合

    これがあなたのために働くことを願っています。

//
//  WPViewController.h
//  AutoLayoutTEst
//
//  Created by VASANTH K on 09/01/14.
//  
//

#import <UIKit/UIKit.h>

@interface WPViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *button1;
- (IBAction)buttClicked:(id)sender;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *heightConstrain;

@property (strong, nonatomic) IBOutlet UIButton *button2;
@end
.

クリックイベント

- (IBAction)buttClicked:(id)sender {


    self.heightConstrain.constant=100;


}
.

ここでは、黄色ボタン用のheightConstrainを設定する必要があります。そのボタンの参照コンセントを作成してから、heightConstrainを更新してそのボタンのサイズを更新すると、赤いボタンを自動的に移動します。

https://github.com/vasanth3008/autolayeighdemo

マイサンプルデモプロジェクト

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top