Burak
Burak

Reputation: 5764

How to place a child view inside a scroll view with Masonry?

I want to place a view into a UIScrollView.

Price* p = _entity.prices[0];
    ItemPriceCell *cell = [[ItemPriceCell alloc] initWithFrame:CGRectZero];
    cell.priceLabel.attributedText = [Helper stylePriceLabel:p.priceString withFont:[UIFont fontWithName:@"OpenSans-Semibold" size:34]];
    cell.priceLabel.textColor = [Helper color:self.shop.currentTheme.options.itemPriceTextColor];
    cell.priceNameLabel.text = [NSString stringWithFormat:@"%@",[p definition]];
    cell.priceNameLabel.textColor = [Helper color:self.shop.currentTheme.options.itemDetailTextColor];
    [self.horizontalScrollView addSubview:cell];

Price cell can be seen now. But if I add this code:

[cell  mas_updateConstraints:^(MASConstraintMaker *make) {
    make.width.equalTo(@200);
    make.height.equalTo(@50);
    make.top.equalTo(@0);
    make.left.equalTo(@0);
    make.right.equalTo(@0);
    make.bottom.equalTo(@0);
}];

price view is hidden. Where am I wrong?

Upvotes: 0

Views: 174

Answers (2)

szubiszon
szubiszon

Reputation: 106

Quicker option:

[cell mas_updateConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(@0);
}];

Upvotes: 0

KrishnaCA
KrishnaCA

Reputation: 5695

The problem in the following block of code are the top, left, bottom and right constraints.

[cell mas_updateConstraints:^(MASConstraintMaker *make) {
     make.top.equalTo(@0);
     make.left.equalTo(@0);
     make.right.equalTo(@0);
     make.bottom.equalTo(@0);
}];

Here, you are making your top constraint equal to 0, i.e, the top border of your cell is 0. Similarly, the left, right and bottom borders of your view are 0. You only added width and height of your cell.

From the constraints you've given here, the iOS auto-layout system gets the frame of cell as cell.superview.bounds. From this, your cell shouldn't be hidden. It should instead occupy the entire view.

Feel free to suggest edits to make this better. Feel free to comment if anything is unclear or you're getting a different result :)

Upvotes: 0

Related Questions