Không thể đồng thời thỏa mãn các ràng buộc, sẽ cố gắng khôi phục bằng cách phá vỡ các ràng buộc


145

Dưới đây là thông báo lỗi tôi nhận được trong khu vực gỡ lỗi. Nó chạy tốt và không có gì sai ngoại trừ việc tôi nhận được lỗi này. Điều này sẽ ngăn táo chấp nhận ứng dụng? Làm thế nào để tôi sửa chữa nó?

2012-07-26 01:58:18.621 Rolo[33597:11303] 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) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x887d630 h=--& v=--& V:[UIButtonLabel:0x886ed80(19)]>",
    "<NSAutoresizingMaskLayoutConstraint:0x887d5f0 h=--& v=--& UIButtonLabel:0x886ed80.midY == + 37.5>",
    "<NSAutoresizingMaskLayoutConstraint:0x887b4b0 h=--& v=--& V:[UIButtonLabel:0x72bb9b0(19)]>",
    "<NSAutoresizingMaskLayoutConstraint:0x887b470 h=--& v=--& UIButtonLabel:0x72bb9b0.midY == - 0.5>",
    "<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>",
    "<NSLayoutConstraint:0x72c2430 UILabel:0x72bfad0.top == UILabel:0x72bf7c0.top>",
    "<NSLayoutConstraint:0x72c2370 UILabel:0x72c0270.top == UILabel:0x72bfad0.top>",
    "<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>",
    "<NSLayoutConstraint:0x72c15b0 V:[UILabel:0x72c0270]-(NSSpace(8))-[UIRoundedRectButton:0x72bbc10]>",
    "<NSLayoutConstraint:0x72c1570 UIRoundedRectButton:0x72bbc10.baseline == UIRoundedRectButton:0x7571170.baseline>",
    "<NSLayoutConstraint:0x72c21f0 UIRoundedRectButton:0x7571170.top == UIButton:0x886efe0.top>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

1
Lỗi này sẽ chỉ xảy ra trong Xcode 4.5, vì vậy dù sao bạn cũng không thể gửi nó đến App Store (cho đến khi nó được phát hành)
borrrden

Vậy có gì sai không? Và có thể sử dụng một phiên bản xcode khác để có thể gửi đến cửa hàng ứng dụng không?
Johnny Cox

1
Vâng, có điều gì đó không đúng, nhưng nó không liên quan vì nó phải làm với một tính năng của iOS chưa có trong các phiên bản Xcode công khai. Nếu nó biên dịch với 4.4, bạn có thể phát hành nó bằng phiên bản đó (nó đã được phát hành ngày hôm nay).
mượn

Tôi nhận được thông báo lỗi này cho các ứng dụng OS X trong Xcode 4.4. Tôi không hiểu nó
Steve McLeod

@ Bartłomiej Semańchot Bạn có thể tham gia phòng này không: chat.stackoverflow.com/rooms/92522/autolayout-and-ios ? Xin lỗi đó là ngẫu nhiên nhưng sẽ đánh giá cao lời khuyên của bạn về một cái gì đó liên quan đến bố cục tự động, cảm ơn!
cheznead

Câu trả lời:


275

Tôi khuyên bạn nên gỡ lỗi và tìm ra ràng buộc nào là "điều bạn không muốn" . Giả sử bạn có vấn đề sau:

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

Luôn luôn vấn đề là làm thế nào để tìm thấy các ràng buộc và quan điểm sau đây.

Có hai giải pháp để làm điều này:

  1. DEBUG XEM XEM HIERARCHY (Không khuyến nghị theo cách này)

Vì bạn biết nơi để tìm các ràng buộc bất ngờ (PBOUserWorkDayHeaderView), có một cách để làm điều này khá tốt. Hãy tìm UIViewNSLayoutConstrainttrong hình chữ nhật màu đỏ. Vì chúng tôi biết id của họ trong bộ nhớ nên khá dễ dàng.

  • Dừng ứng dụng bằng cách sử dụng Chế độ xem gỡ lỗi :

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

  • Tìm UIView thích hợp:

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

  • Việc tiếp theo là tìm NSLayoutConstraint mà chúng tôi quan tâm:

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

Như bạn có thể thấy, các con trỏ bộ nhớ là như nhau. Vì vậy, chúng tôi biết những gì đang xảy ra bây giờ. Ngoài ra, bạn có thể tìm thấy NSLayoutConstrainttrong phân cấp xem. Vì nó được chọn trong View, nên nó cũng được chọn trong Navigator.

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

Nếu bạn cần, bạn cũng có thể in nó trên bàn điều khiển bằng con trỏ địa chỉ:

(lldb) po 0x17dce920
<UIView: 0x17dce920; frame = (10 30; 300 24.5); autoresize = RM+BM; layer = <CALayer: 0x17dce9b0>>

Bạn có thể làm tương tự cho mọi ràng buộc mà trình gỡ lỗi sẽ chỉ cho bạn :-) Bây giờ bạn quyết định phải làm gì với điều này.

  1. IN TỐT HƠN (Tôi thực sự khuyên dùng cách này, đây là của Xcode 7)

    • đặt định danh duy nhất cho mọi ràng buộc trong chế độ xem của bạn:

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

  • tạo phần mở rộng đơn giản cho NSLayoutConstraint:

Chuyển đổi :

extension NSLayoutConstraint {

    override public var description: String {
        let id = identifier ?? ""
        return "id: \(id), constant: \(constant)" //you may print whatever you want here
    }
}

MỤC TIÊU-C

@interface NSLayoutConstraint (Description)

@end

@implementation NSLayoutConstraint (Description)

-(NSString *)description {
    return [NSString stringWithFormat:@"id: %@, constant: %f", self.identifier, self.constant];
}

@end
  • xây dựng nó một lần nữa và bây giờ bạn có đầu ra dễ đọc hơn cho bạn:

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

  • một khi bạn đã nhận được, idbạn có thể đơn giản chạm vào nó trong Find Navigator :

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

  • và nhanh chóng tìm thấy nó:

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

LÀM THẾ NÀO ĐỂ ĐƠN GIẢN CỐ ĐỊNH TRƯỜNG HỢP?

  • cố gắng thay đổi ưu tiên để 999cho hạn chế bị hỏng.

Điều này chỉ sửa lỗi của tôi ... cảm ơn rất nhiều. Làm thế nào bạn sẽ làm điều này cho mục tiêu c? Thêm một danh mục?
cheznead

Thx cho giải pháp, nhưng tôi có thể sử dụng phần mở rộng trong mục tiêu c không?
dev.nikolaz

Là định danh đó giống như khả năng truy cậpIdentifier có sẵn trên UIViews theo chương trình. Nếu không, làm thế nào định danh có thể được thiết lập theo chương trình?
Arunabh Das

@ Không, nó không giống nhau. Đọc câu trả lời này
Bartłomiej Semańchot

3
Tôi thích cách thứ 2 và tôi nghĩ đó là cách tốt nhất để truy tìm các ràng buộc bị hỏng
Antarix

108

Vấn đề bạn gặp phải là NSAutoresizingMaskLayoutConstraint không nên có trong đó. Đây là hệ thống cũ của lò xo và thanh chống. Để thoát khỏi nó, hãy chạy phương thức này trên mỗi chế độ xem mà bạn muốn hạn chế:

[view setTranslatesAutoresizingMaskIntoConstraints:NO];

5
một số lý do cho một chế độ xem hoàn toàn không xuất hiện khi đặt setTranslatesAutoresizingMaskIntoConstraint thành NO?
topwik

1
làm ví dụ, tôi tạo SSBadgeView (UIView), thêm subView imageView vào SSBadgeView, sau đó thêm SSBAdgeView dưới dạng một khung nhìn phụ vào UIReusizableView. Tôi thêm một số ràng buộc vào SSBadgeView và setTranslatesAutoresizingMaskIntoConstraint: NO trên SSBadgeView. SubView hình ảnh của SSBadgeView được đặt ra như mong đợi nhưng cha mẹ SSBadgeView của hình ảnh không được nhìn thấy.
topwik

1
Bạn đã quên vô hiệu hóa translatesAutoresizingMaskIntoConstraint trong chế độ xem phụ của bạn
Softlion

Đây là những gì xảy ra khi tôi đặt thuộc tính này, drive.google.com/file/d/0BxuYs8WHXCF7bV9ndHFrQ0dMYVE/. Tôi đang sử dụng dòng mã này: [self.contentView setTranslatesAutoresizingMaskIntoConstraint: NO; cho (xem UIView * trong self.contentView.subview) {[xem setTranslatesAutoresizingMaskIntoConstraint: NO]; } Trước đó, nó được sử dụng để trông giống như: drive.google.com/file/d/0BxuYs8WHXCF7OWlvZGQwN3FlbzQ/. Nó đã hoạt động, tôi phải nói.
rptwsthi

28

Hãy cẩn thận , rằng bạn không sử dụng nhiều hơn một ràng buộc theo cùng một hướng và loại.

Ví dụ: Ràng buộc dọc cho trailing = 15 và một ràng buộc khác là> = 10.

Đôi khi, Xcode tạo ra một số ràng buộc mà bạn không nhận thấy . Bạn phải thoát khỏi các ràng buộc dư thừa và cảnh báo nhật ký chắc chắn sẽ biến mất.

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

Ngoài ra, bạn có thể đọc và phát hiện một số lý do nhất định, trực tiếp từ nhật ký :

NSLayoutConstraint: 0xa338390 V: | - (15) - [UILabel: 0xa331260] (Tên: '|': UILabel: 0xa330270)>

Điều này chúng ta có thể đọc là vấn đề trong ràng buộc UILabel, nó dẫn đến ràng buộc dọc là 15pt.

NSLayoutConstraint: 0x859ab20 H :-( 13) - | [UIView: 0x85a8fb0] ...

Điều này sẽ được kéo theo ràng buộc ngang, vv


6

Tôi đã có khá nhiều ngoại lệ được đưa ra, cách nhanh nhất và dễ nhất tôi tìm thấy để giải quyết chúng là tìm các giá trị duy nhất trong các ngoại lệ mà sau đó tôi đã tìm kiếm trong mã nguồn của bảng phân cảnh. Điều này giúp tôi tìm (các) chế độ xem và ràng buộc thực tế gây ra sự cố (Tôi sử dụng các biểu tượng người dùng có ý nghĩa trên tất cả các chế độ xem, giúp theo dõi các ràng buộc và chế độ xem dễ dàng hơn nhiều) ...

Vì vậy, bằng cách sử dụng các ngoại lệ ở trên, tôi sẽ mở bảng phân cảnh dưới dạng "mã nguồn" trong xcode (hoặc trình chỉnh sửa khác) và tìm kiếm thứ gì đó tôi có thể tìm thấy ...

<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]> 

.. điều này trông giống như một ràng buộc dọc (V) trên một UILabel có giá trị (17).

Nhìn qua các ngoại lệ tôi cũng tìm thấy

<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>

Trông giống như UILabel (0x72bf7c0) gần với UIButton (0x886efe0) với một số khoảng cách dọc (8) ..

Điều đó hy vọng sẽ đủ để tôi tìm thấy các quan điểm cụ thể trong mã nguồn của bảng phân cảnh (có thể bằng cách tìm kiếm văn bản cho "17" ban đầu), hoặc ít nhất là một vài ứng cử viên có khả năng. Từ đó tôi có thể thực sự tìm ra những góc nhìn nào trong bảng phân cảnh, điều này sẽ giúp việc xác định vấn đề dễ dàng hơn rất nhiều (tìm cách ghim "trùng lặp" hoặc ghim xung đột với các ràng buộc kích thước).


"Tôi sử dụng userLabels có ý nghĩa" - userLabels trong bối cảnh này là gì? (như cách bạn đặt chúng)
Sọc

Trong phần Tài liệu của trình kiểm tra danh tính là trường "Nhãn" .. được dịch sang giá trị "userLabel" trong mã nguồn của bảng câu chuyện.
C James

Bạn cũng có thể đặt chúng bằng cách nhấp vào chế độ xem được chọn trong bảng "Tổng quan" bên trái (hơi giống như đổi tên tệp trong công cụ tìm)
C James

1
Có lẽ là điều tốt nhất mà tôi đã đọc liên quan đến việc giải quyết vấn đề đáng sợ "Không thể đồng thời thỏa mãn các ràng buộc." đau đớn. Tôi thấy rằng đối tượng được hiển thị tại thời điểm này "Sẽ cố gắng khôi phục bằng cách phá vỡ ràng buộc <NSLayoutConstraint:" thường là thủ phạm, và như C James nói, Có lẽ là một ràng buộc về chiều cao hoặc chiều rộng mâu thuẫn với các ràng buộc ghim. Tôi thấy khó để loại bỏ chiều cao nhưng vì các ràng buộc là chính xác nên chiều cao có thể được lượm lặt từ các ràng buộc khác. Thêm một hạn chế về chiều cao chỉ làm cho Bố cục tự động bị nhầm lẫn, vì vậy đó là những gì tôi tìm kiếm bây giờ.
latenitecoder

6

Tôi đã có một thời gian khó khăn để tìm ra những hạn chế đã gây ra lỗi này. Đây là một cách đơn giản hơn để làm điều đó.

Tôi đang sử dụng Xcode 6.1.1

  1. "Lệnh + A" để chọn tất cả các UILabels, UIImages, v.v.
  2. Nhấp vào Trình chỉnh sửa -> Ghim> (Chọn ...) để Superview
  3. một lần nữa nhấp vào Trình chỉnh sửa -> Giải quyết các Sự cố Bố cục Tự động -> Thêm các ràng buộc bị thiếu hoặc Đặt lại cho các ràng buộc được đề xuất. Nó phụ thuộc vào trường hợp của bạn.

5

Tôi gặp vấn đề này vì .xibcác tệp của tôi đang sử dụng tự động thanh toán.

Trong thanh tra tập tin, tab đầu tiên. Bỏ chọn "Sử dụng Autolayout" đã giải quyết vấn đề.

thanh tra tập tin tự động


Vì vậy, tôi đã làm điều đó và nó đã khắc phục vấn đề, nhưng một 'UIImageView' tôi có ở phía trên màn hình (mà tôi sử dụng như một thanh điều hướng) đã được chuyển xuống dưới cùng của màn hình. Bạn có biết tại sao điều đó xảy ra?
dietbacon

1
Autolayout sử dụng các ràng buộc để chi phối bố cục của các đối tượng. Vì bạn vừa tắt tự động thanh toán, các ràng buộc này có thể đã biến mất và do đó, vị trí của bạn UIImageViewđã thay đổi. Bạn phải đặt lại vị trí này, theo lập trình hoặc thông qua Trình tạo giao diện.
Stéphane Bruckert

5

Dưới đây là kinh nghiệm và giải pháp của tôi. Tôi đã không chạm vào mã

  1. Chọn chế độ xem (UILabel, UIImage, v.v.)
  2. Trình chỉnh sửa> Ghim> (Chọn ...) để Superview
  3. Trình chỉnh sửa> Giải quyết các vấn đề về bố cục tự động> Thêm các ràng buộc thiếu

4

sử dụng mã này

view.translatesAutoresizingMaskIntoConstraints = false

1
Đây là một câu trả lời nhanh chóng cho một câu hỏi được gắn thẻ khách quan.
Tobi Nary

2
@SmokeDispenser Dù sao tôi cũng đã đề cập rằng đây là một mã nhanh chóng. và nó được làm việc cho tôi. swift / mục tiêu nó có SDK cảm ứng ca cao phổ biến.
Arun Kumar P

2

Tôi đã theo dõi các câu hỏi và câu trả lời SO từ mỗi truy vấn tìm kiếm. Nhưng tất cả đều có liên quan với một cụ thể.

Về cơ bản, ý tôi là trước khi bạn định viết ra một định dạng (có thể là một định dạng đơn giản) nó sẽ đưa ra một cảnh báo.

Từ iOS 8.0 theo mặc định là các lớp kích thước. Ngay cả khi bạn tắt các lớp kích thước, nó vẫn sẽ chứa một số ràng buộc bố cục tự động.

Vì vậy, nếu bạn đang có kế hoạch đặt các ràng buộc thông qua mã bằng VFL. Sau đó, bạn phải chăm sóc một dòng dưới đây.

// Remove constraints if any.
[self.view removeConstraints:self.view.constraints];

Tôi đã tìm kiếm rất nhiều trong SO, nhưng giải pháp nằm ở Mã mẫu của Apple .

Vì vậy, bạn phải loại bỏ các ràng buộc mặc định trước khi lập kế hoạch để thêm các ràng buộc mới.


1

Đối với tôi lý do chính của vấn đề này là tôi đã quên bỏ chọn AutoLayouttrong Xibtrình chỉnh sửa. Trong thực tế, tôi đã thực hiện rất nhiều điều chỉnh XIBtrong mã.


1
 for(UIView *view in [self.view subviews]) {
    [view setTranslatesAutoresizingMaskIntoConstraints:NO];
}

Điều này giúp tôi bắt được quan điểm gây ra vấn đề.


1

Không có câu trả lời nào ở trên là hữu ích trong tình huống của tôi. Tôi đang chạy XCode 10.1 và thử nghiệm ứng dụng của mình trên trình giả lập cho "iPad (thế hệ thứ 5)". Trình giả lập đang chạy iOS 12.1.

Tôi đã có một cái nhìn gốc đơn giản trong bảng phân cảnh của mình, với hai lần xem xét UITextField. Không có ràng buộc nào được sử dụng trong bảng phân cảnh. Và tôi không có đối tượng UIButtonBarView trong ứng dụng hoặc bảng phân cảnh.

Không có tin nhắn nào được in khi ứng dụng khởi chạy và đặt chế độ xem gốc. Không có khi thiết bị mô phỏng được xoay.

Nhưng trong trình giả lập, khoảnh khắc tôi nhấp vào một trong các trường văn bản, phần mở rộng bàn phím phát sinh từ dưới cùng của màn hình, mặc dù không phải là bàn phím đầy đủ, dường như không bao giờ hiển thị trong trình giả lập. Nhưng sau đây được in ra trên thiết bị đầu cuối:

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) 
(
"<NSAutoresizingMaskLayoutConstraint:0x6000034e7700 h=--& v=--& UIKeyboardAssistantBar:0x7f9c7d714af0.height == 0   (active)>",
"<NSLayoutConstraint:0x6000034aba20 V:|-(0)-[_UIUCBKBSelectionBackground:0x7f9c7d51ec70]   (active, names: '|':_UIButtonBarButton:0x7f9c7d51de40 )>",
"<NSLayoutConstraint:0x6000034aba70 _UIUCBKBSelectionBackground:0x7f9c7d51ec70.bottom == _UIButtonBarButton:0x7f9c7d51de40.bottom   (active)>",
"<NSLayoutConstraint:0x6000034fb3e0 V:|-(0)-[_UIButtonBarStackView:0x7f9c7d715880]   (active, names: '|':UIKeyboardAssistantBar:0x7f9c7d714af0 )>",
"<NSLayoutConstraint:0x6000034fb750 V:[_UIButtonBarStackView:0x7f9c7d715880]-(0)-|   (active, names: '|':UIKeyboardAssistantBar:0x7f9c7d714af0 )>",
"<NSLayoutConstraint:0x6000034abc00 'UIButtonBar.maximumAlignmentSize' _UIButtonBarButton:0x7f9c7d51de40.height == UILayoutGuide:0x600002ef4e00'UIViewLayoutMarginsGuide'.height   (active)>",
"<NSLayoutConstraint:0x6000034d7cf0 'UIView-bottomMargin-guide-constraint' V:[UILayoutGuide:0x600002ef4e00'UIViewLayoutMarginsGuide']-(9)-|   (active, names: '|':_UIButtonBarStackView:0x7f9c7d715880 )>",
"<NSLayoutConstraint:0x6000034d7c50 'UIView-topMargin-guide-constraint' V:|-(10)-[UILayoutGuide:0x600002ef4e00'UIViewLayoutMarginsGuide']   (active, names: '|':_UIButtonBarStackView:0x7f9c7d715880 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x6000034aba70 _UIUCBKBSelectionBackground:0x7f9c7d51ec70.bottom == _UIButtonBarButton:0x7f9c7d51de40.bottom   (active)>

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

Tôi chắc chắn có vẻ như tất cả những điều này không liên quan gì đến ứng dụng của tôi và mọi thứ liên quan đến cách Apple tạo ra chế độ xem bàn phím của riêng mình, ngay cả với tiện ích mở rộng nhỏ của tôi được tuyên bố là được kết hợp với nó.

Vì vậy, câu hỏi vẫn còn đó, có điều gì mà tôi với tư cách là nhà phát triển ứng dụng chịu trách nhiệm thực hiện (với giả định đây là một loạt các công cụ đáng tham dự) hay đó chỉ là vấn đề / lỗi của chính Apple?

FWIW, thông báo sự cố ràng buộc này không xảy ra khi mô phỏng một mẫu iPad mới hơn, chẳng hạn như iPad Pro 12,9 inch (thế hệ thứ 3). Nhưng thông báo sẽ hiển thị khi mô phỏng iPad Pro 9.7 inch ". Tất cả đều cho rằng họ đang chạy iOS 12.1.


1

Tôi đang gặp lỗi tương tự, nhưng chỉ trên một chế độ xem cụ thể, khi tôi chạm vào trường văn bản đầu tiên, và sau đó là trường văn bản tiếp theo.

Tôi đang viết bằng SwiftUI cho iOS 13.4

 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. 
    (
        "<NSLayoutConstraint:0x2809b6760 'assistantHeight' TUISystemInputAssistantView:0x105710da0.height == 44   (active)>",
        "<NSLayoutConstraint:0x2809ccff0 'assistantView.bottom' TUISystemInputAssistantView:0x105710da0.bottom == _UIKBCompatInputView:0x10525ae10.top   (active)>",
        "<NSLayoutConstraint:0x2809cccd0 'assistantView.top' V:|-(0)-[TUISystemInputAssistantView:0x105710da0]   (active, names: '|':UIInputSetHostView:0x105215010 )>",
        "<NSLayoutConstraint:0x2809ca300 'inputView.top' V:|-(0)-[_UIKBCompatInputView:0x10525ae10]   (active, names: '|':UIInputSetHostView:0x105215010 )>"
    )

    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x2809ccff0 'assistantView.bottom' TUISystemInputAssistantView:0x105710da0.bottom == _UIKBCompatInputView:0x10525ae10.top   (active)>

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

0

Tôi cũng đã nhận được cùng một vấn đề về việc phá vỡ các ràng buộc trong nhật ký, đối với viewCircle trong xib. Tôi gần như đã thử mọi thứ được liệt kê ở trên và không có gì hiệu quả với tôi. Sau đó, tôi đã cố gắng thay đổi mức độ ưu tiên của ràng buộc Chiều cao đang phá vỡ nhật ký (được xác nhận bằng cách thêm một định danh cho các ràng buộc trên xib) nhập mô tả hình ảnh vào đây


-1

Một điều cần chú ý (ít nhất là điều này làm tôi vấp ngã) là tôi đã loại bỏ các ràng buộc khỏi quan điểm sai lầm. Ràng buộc mà tôi đang cố gắng loại bỏ không phải là một ràng buộc trẻ con trong quan điểm của tôi nên khi tôi làm

myView.removeConstraint(theConstraint)

nó thực sự không xóa bất cứ thứ gì vì tôi cần gọi

myView.superView.removeConstraint(theConstraint)

vì các ràng buộc về mặt kỹ thuật là hạn chế quan điểm của tôi.


-4

nhanh 4

Tôi chỉ cần thêm dòng này trong viewDidLoad và hoạt động tốt với tôi.

view.removeConstraints(view.constraints)
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.