2014-09-19 15 views
7

Próbuję zaimplementować prosty widget dzienny, który zawiera pojedynczą etykietę ze stałą wysokością.Ustawianie stałej wysokości dla dzisiejszego rozszerzenia iOS8 przy użyciu automatycznego układu

W dokumentacji jest napisane:

Jeśli widget posiada dodatkowe treści do wyświetlenia, na której można polegać Auto ograniczenia układu, aby dostosować wysokość widżetu jako właściwe.

Jednak wciąż otrzymuję ostrzeżenia "Nie można jednocześnie spełnić ograniczeń".

Oto, co starałem:

  1. Utwórz nowy „dzisiaj rozszerzenie” cel, tworzy storyboard z „Hello World” etykiety i widoku kontrolera.
  2. Ustaw ograniczenie wysokości na etykietę "Hello World".

enter image description here

A kiedy biegnę uzyskać:

2014-09-18 21:13:07.123 TestWidget[23381:871330] 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:0x7f87c31126d0 V:[UILabel:0x7f87c3113230'Hello World Fixed Height'(21)]>", 
    "<NSLayoutConstraint:0x7f87c30235b0 V:[_UILayoutGuide:0x7f87c30222b0]-(NSSpace(8))-[UILabel:0x7f87c3113230'Hello World Fixed Height']>", 
    "<NSLayoutConstraint:0x7f87c3023600 V:[UILabel:0x7f87c3113230'Hello World Fixed Height']-(NSSpace(8))-[_UILayoutGuide:0x7f87c3022f00]>", 
    "<_UILayoutSupportConstraint:0x7f87c3021980 V:[_UILayoutGuide:0x7f87c30222b0(0)]>", 
    "<_UILayoutSupportConstraint:0x7f87c30218a0 V:|-(0)-[_UILayoutGuide:0x7f87c30222b0] (Names: '|':UIView:0x7f87c3112f20)>", 
    "<_UILayoutSupportConstraint:0x7f87c3023360 V:[_UILayoutGuide:0x7f87c3022f00(0)]>", 
    "<_UILayoutSupportConstraint:0x7f87c3023300 _UILayoutGuide:0x7f87c3022f00.bottom == UIView:0x7f87c3112f20.bottom>", 
    "<NSLayoutConstraint:0x7f87c3326710 'UIView-Encapsulated-Layout-Height' V:[UIView:0x7f87c3112f20(628)]>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f87c31126d0 V:[UILabel:0x7f87c3113230'Hello World Fixed Height'(21)]> 

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. 

Co robię źle? Jaki jest prawidłowy sposób tworzenia widżetu ze stałą wysokością za pomocą automatycznego układu?

+0

Po znalezieniu tego samego problemu, znalazłeś rozwiązanie? – edwardmp

+0

Jeszcze nie, postanowiłem użyć preferredContentSize na razie. Istnieje [ta odpowiedź] (http://stackoverflow.com/a/26167781/3229567), która wydaje się działać dla niektórych osób, ale nie próbowałem tego. – kbtombul

+0

Yup, zrobił dokładnie to samo. Te rozszerzenia zawierają wiele błędów. – edwardmp

Odpowiedz

0

Cześć, co musisz zrobić, to ustawić wysokość, szerokość, przewodzenie i etykietę etykiet, a także zrobić centrum etykiet X i Y. Co stanie się, gdy uruchomisz aplikację, na górze, na końcu, na dole, gdy uruchomisz aplikację, zachowasz odległość jako jest tak, że widok zostanie rozciągnięty. Jeśli chcesz użyć dowolnego z wiodących, górnych, końcowych, dolnych, musisz dać spację "> =", aby zwiększyć odstępy między dolnymi a superview. Prostym i łatwym rozwiązaniem jest sprawić, by był centerX i centerY z superview. Utworzy widok dokładnie na środku ekranu lub widoku.

Fou Study Celem wizyta:
prosta:
http://technet.weblineindia.com/mobile/using-auto-layout-in-xcode-6-for-universal-ios-app-development/
Advance:
http://www.youtube.com/watch?v=G53PuA_TlXk&feature=youtu.be&list=UUtc1Jt_UTPsXpAGtvlr0nUQ

Jak widać ja po prostu ustawić centerx, Centery, szerokość, wysokość, przednią i tylną przestrzeń.

1

znalazłem sposób, aby usunąć te ostrzeżenia poprzez wprowadzenie widoku otoki, umieścić wszystkie inne poglądy na ten widok opakowania i ustawić niski priorytet wrapper widoku danych wysokość ograniczeń.

snapshot