UIStackView “Không thể đồng thời thỏa mãn các ràng buộc” trên các chế độ xem ẩn “bị bóp méo”


95

Khi "hàng" UIStackView của tôi bị bóp méo, chúng sẽ đưa ra AutoLayoutcảnh báo. Tuy nhiên, chúng hiển thị tốt và không có gì khác là sai ngoài các loại đăng nhập sau:

Không thể đồng thời thỏa mãn các ràng buộc. Có thể ít nhất một trong những ràng buộc trong danh sách sau là điều bạn không muốn. Hãy thử điều này: (1) xem xét từng ràng buộc và cố gắng tìm ra điều bạn không mong đợi; (2) tìm mã đã thêm các ràng buộc hoặc ràng buộc không mong muốn và sửa nó. (Lưu ý: Nếu bạn thấy NSAutoresizingMaskLayoutConstraintsmình không hiểu, hãy tham khảo tài liệu về thuộc UIViewtính translatesAutoresizingMaskIntoConstraints) (

Vì vậy, tôi không chắc chắn làm thế nào để khắc phục điều này, nhưng nó dường như không phá vỡ bất cứ điều gì ngoài việc chỉ gây khó chịu.

Có ai biết làm thế nào để giải quyết nó? Điều thú vị là các ràng buộc về bố cục được gắn thẻ khá thường xuyên với 'UISV-hide' , cho thấy rằng có lẽ nó nên bỏ qua chiều cao tối thiểu cho các lượt xem phụ hoặc một cái gì đó trong trường hợp này?


1
Điều này dường như đã được khắc phục trong iOS11, không nhận được bất kỳ cảnh báo nào ở đây
trapper

Câu trả lời:


204

Bạn gặp phải vấn đề này vì khi đặt chế độ xem phụ từ bên trong UIStackViewsang chế độ ẩn, trước tiên nó sẽ giới hạn chiều cao của nó bằng 0 để tạo hoạt ảnh.

Tôi gặp lỗi sau:

2015-10-01 11:45:13.732 <redacted>[64455:6368084] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7f7f5be18c80 V:[UISegmentedControl:0x7f7f5bec4180]-(8)-|   (Names: '|':UIView:0x7f7f5be69d30 )>",
    "<NSLayoutConstraint:0x7f7f5be508d0 V:|-(8)-[UISegmentedControl:0x7f7f5bec4180]   (Names: '|':UIView:0x7f7f5be69d30 )>",
    "<NSLayoutConstraint:0x7f7f5bdfbda0 'UISV-hiding' V:[UIView:0x7f7f5be69d30(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f7f5be18c80 V:[UISegmentedControl:0x7f7f5bec4180]-(8)-|   (Names: '|':UIView:0x7f7f5be69d30 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

Những gì tôi đang cố gắng làm, là đặt một UIViewbên trong của tôi UIStackViewcó chứa UISegmentedControlnội dung bằng 8pts trên mỗi cạnh.

Khi tôi đặt nó ở chế độ ẩn, nó sẽ cố gắng hạn chế chế độ xem vùng chứa ở độ cao bằng 0 nhưng vì tôi có một tập hợp các ràng buộc từ trên xuống dưới nên đã xảy ra xung đột.

Để giải quyết vấn đề, tôi đã thay đổi mức ưu tiên 8pt trên cùng của các ràng buộc dưới cùng từ 1000 thành 999 để UISV-hidinghạn chế sau đó có thể được ưu tiên nếu cần.


Cần lưu ý rằng có vẻ như nếu bạn chỉ giới hạn chiều cao hoặc chiều rộng cho những thứ này và giảm mức độ ưu tiên của chúng thì nó sẽ không hoạt động. Bạn cần loại bỏ chiều cao / chiều rộng và thêm các đáy ở cuối hàng đầu, sau đó đặt mức độ ưu tiên của chúng là thấp hơn và nó hoạt động
bolnad 10/05

4
Thay đổi các ưu tiên cũng có tác dụng với tôi. Ngoài ra, loại bỏ bất kỳ Ràng buộc thừa (bị mờ) nào đã vô tình được sao chép từ các Lớp Kích thước không sử dụng. MẸO QUAN TRỌNG: để gỡ lỗi những vấn đề này dễ dàng hơn, hãy đặt một chuỗi IDENTIFER trên mỗi Ràng buộc. Sau đó, bạn có thể xem Ràng buộc nào đang bị lỗi trong thông báo gỡ lỗi.
Womble

3
Trong trường hợp của tôi, tôi chỉ phải giảm mức độ ưu tiên về chiều cao và nó hoạt động.
pixelfreak

Mẹo IDENTIFIER đó rất hay! Tôi luôn tự hỏi làm thế nào để đưa ra các ràng buộc trong tên thông báo gỡ lỗi, tôi luôn tìm cách thêm một cái gì đó vào dạng xem thay vì chính ràng buộc đó. Cảm ơn @Womble!
Ryan

Cảm ơn! Ưu tiên 1000-999 đã làm trick.Xcode: Phiên bản 8.3.3 (8E3004b)
Michael Garito

52

Tôi đang gặp vấn đề tương tự không dễ giải quyết. Trong trường hợp của tôi, tôi có một chế độ xem ngăn xếp được nhúng trong một chế độ xem ngăn xếp. UIStackView nội bộ có hai nhãn và khoảng cách khác 0 được chỉ định.

Khi bạn gọi addArrangedSubview (), nó sẽ tự động tạo các ràng buộc tương tự như sau:

V:|[innerStackView]|              | = outerStackView

  V:|[label1]-(2)-[label2]|       | = innerStackView

Bây giờ khi bạn cố gắng ẩn innerStackView, bạn sẽ nhận được cảnh báo về các ràng buộc không rõ ràng.

Để hiểu tại sao, trước tiên chúng ta hãy xem tại sao điều này không xảy ra khi innerStackView.spacingbằng 0. Khi bạn gọi innerStackView.hidden = true, @liamnichols đã chính xác ... outerStackViewsẽ chặn cuộc gọi này một cách kỳ diệu và tạo giới hạn ẩn UISV0 chiều cao với mức ưu tiên 1000 (bắt buộc). Có lẽ điều này là để cho phép các phần tử trong chế độ xem ngăn xếp được hoạt ảnh ra khỏi chế độ xem trong trường hợp mã ẩn của bạn được gọi trong một khối. Thật không may, dường như không có cách nào để ngăn việc thêm ràng buộc này. Tuy nhiên, bạn sẽ không nhận được cảnh báo "Không thể đồng thời thỏa mãn các ràng buộc" (USSC), vì điều sau xảy ra:UIView.animationWithDuration()

  1. Chiều cao của label1 được đặt thành 0
  2. khoảng cách giữa hai nhãn đã được xác định là 0
  3. Chiều cao của label2 được đặt thành 0
  4. chiều cao của innerStackView được đặt thành 0

Rõ ràng là có thể thỏa mãn 4 ràng buộc đó. Chế độ xem ngăn xếp chỉ đơn giản là làm mịn mọi thứ thành một pixel chiều cao 0.

Bây giờ trở lại với ví dụ lỗi, nếu chúng ta đặt spacingđể 2, bây giờ chúng ta có những khó khăn này:

  1. Chiều cao của label1 được đặt thành 0
  2. khoảng cách giữa hai nhãn được chế độ xem ngăn xếp tự động tạo ra là 2 pixel cao ở mức ưu tiên 1000.
  3. Chiều cao của label2 được đặt thành 0
  4. chiều cao của innerStackView được đặt thành 0

Chế độ xem ngăn xếp không được vừa có chiều cao 0 pixel vừa có nội dung của nó cao 2 pixel. Các ràng buộc không thể được thỏa mãn.

Lưu ý: Bạn có thể thấy hành vi này bằng một ví dụ đơn giản hơn. Chỉ cần thêm một UIView vào một chế độ xem ngăn xếp dưới dạng một chế độ xem phụ được sắp xếp. Sau đó, thiết lập giới hạn chiều cao trên UIView đó với ưu tiên 1000. Bây giờ hãy thử gọi ẩn trên đó.

Lưu ý: Vì bất kỳ lý do gì, điều này chỉ xảy ra khi chế độ xem ngăn xếp của tôi là chế độ xem phụ của UICollectionViewCell hoặc UITableViewCell. Tuy nhiên, bạn vẫn có thể tái tạo hành vi này bên ngoài một ô bằng cách gọi innerStackView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)vòng lặp chạy tiếp theo sau khi ẩn chế độ xem ngăn xếp bên trong.

Lưu ý: Ngay cả khi bạn thử thực thi mã trong UIView.performWithoutAnimations, chế độ xem ngăn xếp sẽ vẫn thêm giới hạn chiều cao 0, điều này sẽ gây ra cảnh báo USSC.


Có ít nhất 3 giải pháp cho vấn đề này:

  1. Trước khi ẩn bất kỳ phần tử nào trong chế độ xem ngăn xếp, hãy kiểm tra xem đó có phải là chế độ xem ngăn xếp hay không, và nếu có, hãy thay đổi spacingthành 0. Điều này gây khó chịu vì bạn cần phải đảo ngược quy trình (và nhớ khoảng cách ban đầu) bất cứ khi nào bạn hiển thị lại nội dung.
  2. Thay vì ẩn các phần tử trong dạng xem ngăn xếp, hãy gọi removeFromSuperview. Điều này thậm chí còn khó chịu hơn vì khi bạn đảo ngược quá trình, bạn cần nhớ nơi để chèn mục đã loại bỏ. Bạn có thể tối ưu hóa bằng cách chỉ gọi removeArrangedSubview và sau đó ẩn, nhưng có rất nhiều sổ sách kế toán vẫn cần được thực hiện.
  3. Gói các chế độ xem ngăn xếp lồng nhau (có khác 0 spacing) trong một UIView. Chỉ định ít nhất một ràng buộc là mức độ ưu tiên không bắt buộc (999 hoặc thấp hơn). Đây là giải pháp tốt nhất vì bạn không phải ghi sổ sách kế toán. Trong ví dụ của tôi, tôi đã tạo các ràng buộc trên cùng, đầu và cuối ở 1000 giữa chế độ xem ngăn xếp và chế độ xem trình bao bọc, sau đó tạo một ràng buộc 999 từ dưới cùng của chế độ xem ngăn xếp đến chế độ xem trình bao bọc. Bằng cách này khi chế độ xem ngăn xếp bên ngoài tạo ra giới hạn chiều cao bằng 0, giới hạn 999 bị phá vỡ và bạn không thấy cảnh báo USSC. (Lưu ý: Điều này tương tự như giải pháp cho Nếu contentView.translatesAutoResizingMaskToConstraints của một lớp con UICollectionViewCell được đặt thànhfalse )

Tóm lại, lý do bạn nhận được hành vi này là:

  1. Apple tự động tạo 1000 ràng buộc ưu tiên cho bạn khi bạn thêm các chế độ xem phụ được quản lý vào chế độ xem ngăn xếp.
  2. Apple tự động tạo giới hạn chiều cao 0 cho bạn khi bạn ẩn một chế độ xem phụ của chế độ xem ngăn xếp.

Nếu Apple hoặc (1) cho phép bạn chỉ định mức độ ưu tiên của các ràng buộc (đặc biệt là các bộ đệm) hoặc (2) cho phép bạn chọn không tham gia ràng buộc ẩn UISV tự động , thì vấn đề này sẽ dễ dàng giải quyết.


6
Cảm ơn vì lời giải thích siêu kỹ lưỡng và hữu ích. Tuy nhiên, điều này chắc chắn có vẻ như là một lỗi từ phía Apple với chế độ xem ngăn xếp. Về cơ bản tính năng "ẩn" của chúng không tương thích với tính năng "giãn cách" của chúng. Bất kỳ ý tưởng nào của họ đã giải quyết vấn đề này kể từ đó hoặc đã thêm một số tính năng để ngăn chặn việc hack xung quanh với các chế độ xem có chứa bổ sung? (Một lần nữa, phân tích tuyệt vời về các giải pháp tiềm năng và thực sự đồng ý về sự thanh lịch của # 3)
Marchy

1
Có phải mọi UIStackViewđứa trẻ đều UIStackViewcần được bao bọc trong một UIViewhoặc chỉ một đứa trẻ mà bạn đang tìm cách ẩn / hiện?
Adrian

1
Điều này giống như một sự giám sát thực sự tồi tệ của Apple. Đặc biệt là vì các cảnh báo và lỗi xung quanh việc sử dụng UIStackViewcó xu hướng khó hiểu và khó hiểu.
bompf

Đây là một cứu cánh. Tôi đang gặp sự cố trong đó UIStackViews được thêm vào UITableViewCell gây ra spam nhật ký lỗi AutoLayout, mỗi khi ô được sử dụng lại. Nhúng stackView trong một UIView với mức ưu tiên ràng buộc neo dưới cùng được đặt thành thấp, đã giải quyết được vấn đề. Nó làm cho trình gỡ lỗi chế độ xem hiển thị các phần tử của stackView có chiều cao không rõ ràng, nhưng nó hiển thị đúng trong ứng dụng, không có spam nhật ký lỗi. CẢM ƠN BẠN.
Womble

6

Thông thường, lỗi này có thể được giải quyết bằng cách giảm mức độ ưu tiên của các ràng buộc để loại bỏ xung đột.


Ý anh là gì? Những hạn chế tất cả đều tương đối trong các quan điểm được xếp chồng lên nhau ....
Ben Guild

Tôi xin lỗi, tôi không hiểu câu hỏi của bạn đúng, tiếng Anh của tôi là vậy, nhưng những gì tôi nghĩ là các ràng buộc là liên quan đến phù thủy chế độ xem nó được liên kết, nếu chế độ xem bị ẩn thì các ràng buộc sẽ không hoạt động. Tôi không chắc đó có phải là nghi ngờ của bạn không, nhưng tôi hy vọng tôi có thể giúp.
Luciano Almeida

Nó dường như đến từ khi nội dung bị bóp méo hoặc trong quá trình hiển thị / ẩn. Trong trường hợp này, nó có thể nhìn thấy một phần. - Có lẽ cần phải thực sự đi qua và loại bỏ bất kỳ hằng số dọc tối thiểu nào vì nó có thể được bình phương đến chiều cao 0?
Ben Guild

2

Khi bạn đặt chế độ xem thành ẩn, chế độ xem UIStackviewsẽ cố gắng làm hoạt ảnh nó đi. Nếu bạn muốn có hiệu ứng đó, bạn sẽ cần đặt mức độ ưu tiên phù hợp cho các ràng buộc để chúng không xung đột (như nhiều người đã đề xuất ở trên).

Tuy nhiên, nếu bạn không quan tâm đến hoạt ảnh (có lẽ bạn đang ẩn nó trong ViewDidLoad), thì bạn có thể đơn giản removeFromSuperviewmà sẽ có tác dụng tương tự nhưng không gặp bất kỳ vấn đề nào với các ràng buộc vì chúng sẽ bị xóa cùng với chế độ xem.


1

Dựa trên câu trả lời của @ Senseful, đây là một tiện ích mở rộng UIStackView để bao bọc một chế độ xem ngăn xếp trong một chế độ xem và áp dụng các ràng buộc mà anh ấy hoặc cô ấy đề xuất:

/// wraps in a `UIView` to prevent autolayout warnings when a stack view with spacing is placed inside another stack view whose height might be zero (usually due to `hidden` being `true`).
/// See http://stackoverflow.com/questions/32428210
func wrapped() -> UIView {
    let wrapper = UIView()
    translatesAutoresizingMaskIntoConstraints = false
    wrapper.addSubview(self)

    for attribute in [NSLayoutAttribute.Top, .Left, .Right, .Bottom] {
        let constraint = NSLayoutConstraint(item: self,
                                            attribute: attribute,
                                            relatedBy: .Equal,
                                            toItem: wrapper,
                                            attribute: attribute,
                                            multiplier: 1,
                                            constant: 0)
        if attribute == .Bottom { constraint.priority = 999 }
        wrapper.addConstraint(constraint)
    }
    return wrapper
}

Thay vì thêm của bạn stackView, hãy sử dụng stackView.wrapped().


1

Trước tiên, như những người khác đã đề xuất, hãy đảm bảo rằng các ràng buộc mà bạn có thể kiểm soát, tức là không phải các ràng buộc vốn có đối với UIStackView được đặt thành ưu tiên 999 để chúng có thể bị ghi đè khi chế độ xem bị ẩn.

Nếu bạn vẫn gặp sự cố, thì sự cố có thể do khoảng cách trong StackViews ẩn. Giải pháp của tôi là thêm một UIView làm bộ đệm và đặt khoảng cách UIStackView thành 0. Sau đó đặt các ràng buộc View.height hoặc View.width (tùy thuộc vào ngăn xếp dọc hoặc ngang) thành khoảng cách của StackView.

Sau đó, điều chỉnh các ưu tiên về độ ôm nội dung và khả năng chống nén nội dung của các chế độ xem mới được thêm vào của bạn. Bạn cũng có thể phải thay đổi phân phối của StackView mẹ.

Tất cả những điều trên có thể được thực hiện trong Interface Builder. Ngoài ra, bạn có thể phải ẩn / hiện một số chế độ xem mới được thêm theo chương trình để bạn không có khoảng cách không mong muốn.


1

Gần đây tôi đã phải vật lộn với lỗi bố cục tự động khi ẩn a UIStackView. Thay vì thực hiện một loạt các ngăn xếp và giữ sách UIViews, tôi đã chọn tạo một lối thoát cho parentStackViewcác cửa hàng của tôi và cho những đứa trẻ mà tôi muốn giấu / bỏ ẩn.

@IBOutlet weak var parentStackView: UIStackView!
@IBOutlet var stackViewNumber1: UIStackView!
@IBOutlet var stackViewNumber2: UIStackView!

Trong bảng phân cảnh, đây là giao diện của parentStack của tôi:

nhập mô tả hình ảnh ở đây

Nó có 4 đứa trẻ và mỗi đứa trẻ đều có một loạt các khung nhìn ngăn xếp bên trong chúng. Khi bạn ẩn chế độ xem ngăn xếp, nếu nó cũng có các phần tử giao diện người dùng cũng là chế độ xem ngăn xếp, bạn sẽ thấy một loạt lỗi bố cục tự động. Thay vì ẩn, tôi đã chọn xóa chúng.

Trong ví dụ của tôi, parentStackViewschứa một mảng gồm 4 phần tử: Top Stack View, StackViewNumber1, Stack View Number 2 và Stop Button. Các chỉ số của họ lần lượt arrangedSubviewslà 0, 1, 2 và 3. Khi tôi muốn ẩn một cái, tôi chỉ cần xóa nó khỏi parentStackView's arrangedSubviewsmảng. Vì nó không yếu, nó sẽ tồn tại trong bộ nhớ và bạn chỉ cần đưa nó trở lại chỉ mục mong muốn của mình sau này. Tôi không khởi động lại nó, vì vậy nó chỉ hoạt động cho đến khi cần thiết, nhưng không làm tăng bộ nhớ.

Về cơ bản, bạn có thể ...

1) Kéo IBOutlets cho ngăn xếp cha mẹ của bạn và những phần tử con bạn muốn ẩn / hiện vào bảng phân cảnh.

2) Khi bạn muốn ẩn chúng, hãy xóa ngăn xếp bạn muốn ẩn khỏi parentStackView's arrangedSubviewsmảng.

3) Gọi self.view.layoutIfNeeded()với UIView.animateWithDuration.

Lưu ý hai stackView cuối cùng không weak. Bạn cần giữ chúng xung quanh khi bạn hiện chúng.

Giả sử tôi muốn ẩn stackViewNumber2:

parentStackView.removeArrangedSubview(stackViewNumber2)
stackViewNumber2.removeFromSuperview()

Sau đó tạo hoạt ảnh cho nó:

UIView.animate(withDuration: 0.25,
               delay: 0,
               usingSpringWithDamping: 2.0,
               initialSpringVelocity: 10.0,
               options: [.curveEaseOut],
               animations: {
                self.view.layoutIfNeeded()
},
               completion: nil)

Nếu bạn muốn "bỏ ẩn" stackViewNumber2sau này, bạn chỉ cần chèn nó vào parentStackView arrangedSubViewschỉ mục mong muốn và tạo hiệu ứng cho bản cập nhật.

parentStackView.removeArrangedSubview(stackViewNumber1)
stackViewNumber1.removeFromSuperview()
parentStackView.insertArrangedSubview(stackViewNumber2, at: 1)

// Then animate it
UIView.animate(withDuration: 0.25,
               delay: 0,
               usingSpringWithDamping: 2.0,
               initialSpringVelocity: 10.0,
               options: [.curveEaseOut],
               animations: {
                self.view.layoutIfNeeded()
},
               completion: nil)

Tôi thấy rằng điều đó dễ dàng hơn rất nhiều so với việc ghi sổ sách theo các ràng buộc, tìm kiếm các ưu tiên, v.v.

Nếu bạn có thứ gì đó bạn muốn ẩn theo mặc định, bạn có thể chỉ cần đặt nó trên bảng phân cảnh và xóa nó viewDidLoadvà cập nhật mà không sử dụng hoạt ảnh view.layoutIfNeeded().


1

Tôi đã gặp phải các lỗi tương tự với Chế độ xem ngăn xếp được nhúng, mặc dù mọi thứ đều hoạt động tốt trong thời gian chạy.

Tôi đã giải quyết các lỗi ràng buộc bằng cách ẩn tất cả các chế độ xem ngăn xếp con trước (thiết lập isHidden = true) trước khi ẩn chế độ xem ngăn xếp mẹ.

Làm điều này không có tất cả sự phức tạp của việc loại bỏ các chế độ xem được sắp xếp phụ, duy trì một chỉ mục khi cần thêm lại chúng.

Hi vọng điêu nay co ich.


1

Senseful đã cung cấp một câu trả lời tuyệt vời cho gốc rễ của vấn đề ở trên, vì vậy tôi sẽ đi thẳng vào giải pháp.

Tất cả những gì bạn cần làm là đặt ưu tiên tất cả các ràng buộc stackView thấp hơn 1000 (999 sẽ thực hiện công việc). Ví dụ: nếu stackView bị ràng buộc trái, phải, trên và dưới thành superview của nó thì tất cả 4 ràng buộc phải có mức độ ưu tiên thấp hơn 1000.


0

Bạn có thể đã tạo một ràng buộc trong khi làm việc với một lớp kích thước nhất định (ví dụ: wCompact hRegular) và sau đó bạn tạo một bản sao khi chuyển sang một lớp kích thước khác (ví dụ: wAny hAny). kiểm tra các ràng buộc của các đối tượng giao diện người dùng trong các lớp kích thước khác nhau và xem liệu các ràng buộc có bất thường hay không. bạn sẽ thấy các đường màu đỏ cho biết các ràng buộc va chạm. Tôi không thể đặt một bức ảnh cho đến khi tôi nhận được 10 điểm danh tiếng, xin lỗi: /


Ồ được thôi. nhưng tôi đã gặp lỗi đó khi gặp trường hợp mà tôi đã mô tả drive.google.com/file/d/0B-mn7bZcNqJMVkt0OXVLVVdnNTA/…
FM

Vâng, tôi chắc chắn không thấy bất kỳ màu đỏ nào bằng cách chuyển đổi các lớp kích thước trong trình tạo giao diện. Tôi chỉ sử dụng kích thước "Bất kỳ".
Ben Guild

0

Tôi muốn ẩn toàn bộ UIStackView cùng một lúc nhưng tôi gặp lỗi tương tự như OP, điều này đã khắc phục cho tôi:

for(UIView *currentView in self.arrangedSubviews){
    for(NSLayoutConstraint *currentConstraint in currentView.constraints){
        [currentConstraint setPriority:999];
    }
}

Điều này không hiệu quả với tôi vì công cụ bố cục tự động phàn nàn khi bạn thay đổi ràng buộc bắt buộc ( priority = 1000) thành không bắt buộc ( priority <= 999).
Senseful

0

Tôi có một hàng nút bị giới hạn chiều cao. Điều này xảy ra khi một nút bị ẩn. Đặt mức độ ưu tiên của giới hạn chiều cao các nút đó thành 999 đã giải quyết được vấn đề.


-2

Lỗi này không liên quan gì đến UIStackView. Nó xảy ra khi bạn có những ràng buộc xung đột với cùng các ưu tiên. Ví dụ: nếu bạn có một ràng buộc nói rằng chiều rộng của chế độ xem của bạn là 100 và bạn có một ràng buộc khác đồng thời cho biết rằng chiều rộng của chế độ xem bằng 25% vùng chứa của nó. Rõ ràng là có hai ràng buộc mâu thuẫn. Giải pháp là xóa chúng.


-3

NOP với [mySubView removeFromSuperview]. Tôi hy vọng nó có thể giúp ai đó :)


Xin lỗi, NOP là gì?
Pang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.