2017-04-24 6 views
0

自分のプロジェクトのVCの半分以上で何度も何度も再利用したいカスタムUIViewがあります。さらに、これらのすべてのVCでは、下部に配置する必要があります。私のカスタムUIViewの制約を親VCボトムレイアウトで変更する

私は何らかの理由で、bottomLayoutGuideを使ってその動作のボトムコンストレインを変更したいと思います。私がこの構造を再利用することに気をつけなければ、簡単に行うことができます。それでは、コンセントを使ってこの制約を変更することができます。しかし、それは他のVCでコードを複製する必要があることを意味します。

このような種類の繰り返しを避けて、現在のVC bottomLayoutGuideが動作中に変更される可能性があるカスタムビューを再利用するにはどうすればよいですか?

+0

このコードを追加すると、そのコードを最適化するのに役立ちます。 – KKRocks

答えて

1

nsobjectのサブクラスであり、このような関数を書くクラスを作る。そのサブクラスの前に インポートフレームワーク。

+ (UIView*)makeCustomViewWithBottomConstraint:(NSInteger)bottomConstant andHeight:(NSInteger)viewHeight inViewController:(UIViewController*)vc{ 

    UIView *customView = [[UIView alloc]init]; 
    [vc.view addSubview:customView]; 
    customView.backgroundColor = [UIColor purpleColor]; 
    customView.translatesAutoresizingMaskIntoConstraints = NO; 

    NSDictionary *metrics = @{@"viewHeight":@(viewHeight), 
           @"bottomConstant":@(bottomConstant)}; 
    NSDictionary *views = NSDictionaryOfVariableBindings(customView); 

    NSArray *hConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|" 
                       options:0 
                       metrics:metrics 
                       views:views]; 
    NSArray *vConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view(viewHeight)]-bottomConstant-|" 
                       options:0 
                       metrics:metrics 
                       views:views]; 



    [vc.view addConstraints:hConstraint]; 
    [vc.view addConstraints:vConstraint]; 

    return customView; 

} 

と私はGitHubの中にサンプルプロジェクトを追加したこの

[CustomViewClass makeCustomViewWithBottomConstraint:0 andHeight:40 inViewController:self]; 

のように、ご希望のビューコントローラでは、このクラスのメソッドにアクセスします。客観的なCのため申し訳ありません。私はまだこの言語が大好きです。 github link

関連する問題