2016-06-11 5 views
0

iCarouselレイアウトで乗算器を使用しようとしていますが、まったく影響がないようです。これは私のコードです:iCarousel AutoLayout Multiplier issue

_carousel = [[iCarousel alloc]init ]; 
self.items = [NSMutableArray array]; 
for (int i = 0; i < 10; i++) 
{ 
    [_items addObject:@(i)]; 
} 
_carousel.type = iCarouselTypeCylinder; 

_carousel.delegate = self; 
_carousel.dataSource = self; 

_carousel.translatesAutoresizingMaskIntoConstraints = false; 

[self.view addSubview:_carousel]; 

[_carousel.centerXAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.centerXAnchor].active = true; 
[_carousel.bottomAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.bottomAnchor constant:-80].active = true; 

[_carousel.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier:40.0/100.0].active = true; 
[_carousel.heightAnchor constraintEqualToAnchor:self.view.heightAnchor multiplier:30.0/100.0].active = true; 

私が言う-20の入力であれば一定の値ということも気づいた:iCarouselがうまくビュー下アンカーと私ドン」を下回った

[_carousel.bottomAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.bottomAnchor constant:-20].active = true; 

なぜ分かる?

誰でもプログラムのレイアウトに慣れていないものを見落としてしまった場合は、私に許してください。

答えて

0

自動レイアウトエンジンでプロトタイピングの制約が発生しないように、コードを変更してloadViewに移動する必要があります。たとえば:あなたはUIViewControllerサブクラスにプログラムでサブビューを追加する場所一般loadView

- (void) loadView 
{ 
    [super loadView]; 

    _carousel = [[iCarousel alloc]init ]; 
    self.items = [NSMutableArray array]; 
    for (int i = 0; i < 10; i++) 
    { 
     [_items addObject:@(i)]; 
    } 
    _carousel.type = iCarouselTypeCylinder; 

    _carousel.delegate = self; 
    _carousel.dataSource = self; 

    _carousel.translatesAutoresizingMaskIntoConstraints = false; 

    [self.view addSubview:_carousel]; 

    [_carousel.centerXAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.centerXAnchor].active = true; 
    [_carousel.bottomAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.bottomAnchor constant:-80].active = true; 

    [_carousel.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier:40.0/100.0].active = true; 
    [_carousel.heightAnchor constraintEqualToAnchor:self.view.heightAnchor multiplier:30.0/100.0].active = true; 
} 

です。

+0

ありがとうございました:)ご質問をお願いしますか? – sharp

+0

このコードを試しましたか?この固定自動レイアウトは、コードを実行しているときに、自動レイアウト制約が壊れる原因となるプロトタイプ制約として問題になります。私はあなたの 'UIViewController'または' UIView'ライフサイクルに投稿したコードはどこですか? – beyowulf

+0

私はIBを使用していないので、試作の制約はありません。これらのコードブロック(constraintEqualToAnchor:乗数メソッド)は、プログラムのどこかで正しく動作しますが、iCarouselでは正しく動作しません。私のプログラムでは、iCarouselの設定は、ビューがロードされた後、条件に基づいて行われるため、このコードを 'loadView'に配置することはできません。 iCarouselはcenterXとbottomアンカーによって配置されますが、乗数は効果がありません。その結果、iCarouselはすべてのデバイス上の点で同じサイズになりますが、これは嫌です。私はそれが異なった画面サイズでそれに応じてサイズ変更するようにします。 – sharp

関連する問題