0

我正在尝试在 iCarousel 布局上使用乘数,但它们似乎根本没有任何影响。这是我的代码:

_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:

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

iCarousel 远低于视图底部锚点,我不知道为什么?

任何人都可以回答这些问题,如果我忽略了任何事情,因为我是程序化布局的新手,请原谅我。

4

1 回答 1

0

您应该覆盖并移动您的代码以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;  
}

通常loadView是您希望以编程方式将子视图添加到UIViewController子类的地方。

于 2016-06-11T15:14:41.220 回答