Tôi có một đơn giản ngang UIStackView
với một số UIViews xếp chồng lên nhau bên trong. Mục tiêu của tôi là tạo khoảng cách biến giữa các chế độ xem. Tôi nhận thức rõ rằng tôi có thể tạo không gian liên tục giữa các phần phụ sử dụng thuộc tính "khoảng cách". Tuy nhiên mục tiêu của tôi là tạo ra không gian biến đổi. Xin lưu ý, nếu có thể, tôi muốn tránh sử dụng chế độ xem vô hình hoạt động như miếng đệm.Làm cách nào để tạo UIStackView với khoảng cách biến giữa các chế độ xem?
Điều tốt nhất tôi đưa ra là bọc UIViews của tôi trong UIStackView riêng biệt và sử dụng layoutMarginsRelativeArrangement = YES để tôn trọng lề bố cục của ngăn xếp bên trong của tôi. Tôi đã hy vọng tôi có thể làm một cái gì đó tương tự với bất kỳ UIView mà không cần đến công việc này xấu xí xung quanh. Đây là mẫu mã của tôi:
// Create stack view
UIStackView *stackView = [[UIStackView alloc] init];
stackView.translatesAutoresizingMaskIntoConstraints = NO;
stackView.axis = UILayoutConstraintAxisHorizontal;
stackView.alignment = UIStackViewAlignmentCenter;
stackView.layoutMarginsRelativeArrangement = YES;
// Create subview
UIView *view1 = [[UIView alloc] init];
view1.translatesAutoresizingMaskIntoConstraints = NO;
// ... Add Auto Layout constraints for height/width
// ...
// I was hoping the layoutMargins would be respected, but they are not
view1.layoutMargins = UIEdgeInsetsMake(0, 25, 0, 0);
// ... Create more subviews
// UIView view2 = [[UIView alloc] init];
// ...
// Stack the subviews
[stackView addArrangedSubview:view1];
[stackView addArrangedSubview:view2];
Kết quả là một chồng với quan điểm ngay bên cạnh nhau với khoảng cách:
Cảm ơn nhưng tôi đã hy vọng tôi không phải sử dụng chế độ xem trống để thêm không gian hoặc quay lại Bố cục tự động. Mặc dù nếu UIStackView không hỗ trợ trường hợp sử dụng của tôi, tôi có thể vẫn cần. – yura
Tại sao bạn muốn khoảng cách thay đổi? Bạn có thể có khoảng cách biến nếu bạn sử dụng 'phân phối' 'bằng cách định tâm'. Điều này sẽ làm cho các trung tâm có chiều rộng bằng nhau, nhưng khoảng cách sẽ khác nhau. Giải thích thêm về trường hợp sử dụng của bạn. –
Về cơ bản, tôi có một số chế độ xem mà tôi cần phân phối theo chiều ngang (hoặc theo chiều dọc) với khoảng cách được xác định trước giữa các chế độ xem, có thể có hoặc không có cùng giá trị. Tôi muốn có thể chỉ định các lề đó với layoutMargins hoặc một số cơ chế khác. – yura