2015-03-24 15 views
5

Tôi muốn căn giữa UIImageView và UILabel của mình giống như hình ảnh bên dưới. Tôi đã sử dụng vùng chứa chứa UIImageView và UILabel, nhưng vùng chứa không phù hợp với chiều rộng của UIImageView và UILabel. Tôi cần đặt chiều rộng của vùng chứa. Có phương pháp nào để giải quyết sự cố mà không đặt chiều rộng hoặc tính toán xem chiều rộng? Dưới đây là hình ảnh:iOS cách căn giữa hai chế độ xem qua PureLayout

MyLabel

Trả lời

7

Có bốn điểm trong hành động:

  1. xem Outer hoặc chính
  2. xem
  3. container (chứa hình ảnh và nhãn)
  4. ảnh xem
  5. Label xem

Những quan điểm là ở sau hệ thống cấp bậc:

  1. xem Outer
    1. container Xem
      1. xem ảnh
      2. Label xem

Tôi giả định rằng ngoài xem chiều rộng của nó là d chiều cao từ các ràng buộc khác.

Những gì tôi nhìn thấy từ hình ảnh mà bạn cung cấp hình ảnh đó là cao hơn nhãn, giữ ý nghĩ đó ép sau đây có thể đạt được những gì bạn muốn:

  1. Align trục X của view container để xem bên ngoài
  2. Align Y trục view container để xem bên ngoài
  3. Pin hàng đầu, bên trái và cạnh đáy của xem hình ảnh để xem chứa
  4. Pin cạnh phải của nhãn để xem chứa
  5. trục Align Y Labe l để xem container.
  6. Đặt khoảng cách ngang giữa chế độ xem hình ảnh và nhãn.
+0

Bạn đã lưu ngày của mình! – Thorax

+0

Bình luận như thế này làm cho nó đáng giá để trả lời trên stackoverflow. Giữ nó lên. – Abdullah

+0

nó hoạt động! trong trường hợp của tôi, tôi đặt một giới hạn chiều rộng cho Outer view tôn trọng cha mẹ của nó, tôi đã làm bởi vì văn bản nhãn là động và nó có thể tràn –

2
[self.button autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:15]; 
[self.button autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:15]; 
[self.button autoSetDimension:ALDimensionHeight toSize:46]; 
[self.button autoAlignAxis:ALAxisVertical toSameAxisOfView:self.contentView]; 

[self.containerView autoAlignAxisToSuperviewAxis:ALAxisHorizontal]; 
[self.containerView autoAlignAxisToSuperviewAxis:ALAxisVertical]; 

[self.iconImageView autoPinEdge:ALEdgeLeft toEdge:ALEdgeLeft ofView:self.containerView]; 
[self.iconImageView autoAlignAxisToSuperviewAxis:ALAxisHorizontal]; 

[self.label autoPinEdge:ALEdgeRight toEdge:ALEdgeRight ofView:self.containerView]; 
[self.label autoAlignAxisToSuperviewAxis:ALAxisHorizontal]; 

[self.label autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:self.iconImageView withOffset:10]; 

Nhờ @abdullah. Anh ta đã dọn sạch tâm trí tôi. Tôi quên "Ghim cạnh phải của nhãn vào chế độ xem vùng chứa", vì vậy, width của containerView đã trở thành 0.

Các vấn đề liên quan