Wenn ich meinen Ansichten irgendeine Art von UIDynamicBehavior
hinzufüge, bricht es Dinge völlig, wenn das Gerät gedreht wird. Hier ist, was es im Portrait ist (korrekt angezeigt):UIDynamics and Device Rotation
Und hier ist es in der Landschaft, die alle brachen:
Ich glaube nicht, es ist ein automatisches Layout Problem, denn wenn ich die Anrufe entfernen Hinzufügen der UIDynamicBehavior
es funktioniert gut ohne Probleme mit dem automatischen Layout. Es werden auch keine automatischen Layoutfehler ausgegeben. Hier ist der Code:
@interface SWViewController() {
UICollisionBehavior *coll;
UIDynamicAnimator *dynamicAnimator;
}
@implementation SWViewController
- (void)viewDidLoad {
[super viewDidLoad];
dynamicAnimator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self setupCollisions]; // commenting this out fixes the layout
}
- (void)setupCollisions {
NSArray *dynamicViews = @[greenView];
coll = [[UICollisionBehavior alloc] initWithItems:dynamicViews];
CGFloat topBound = CGRectGetMinY(greenView.frame);
[coll addBoundaryWithIdentifier:@"top"
fromPoint:CGPointMake(0, h1)
toPoint:CGPointMake(CGRectGetWidth(greenView.frame), h1)];
[dynamicAnimator addBehavior:coll];
}
Wenn ich didRotateFromInterfaceOrientation
außer Kraft setzen kann ich sehen, dass die obere Grenze der greenView
folgt nicht, was automatisches Layout sagt, es soll (wieder zu entfernen, den Anruf zu setupCollisions
behebt diese).
Die automatische Layout Grenzen auf greenView
sind:
height = 200
trailing space to Superview = 0
leading space to Superview = 0
bottom space to Superview = 0
Hallo, ich sehe, dass Sie hier Kollisionsverhalten verwenden. Was macht das ohne Schwerkraftverhalten? Vielen Dank. – Unheilig
In diesem Beispiel verwende ich nicht einmal ein Schwerkraftverhalten. Wenn ich es ausschalte, macht es das Gleiche. – swilliams
Ich würde sehr empfehlen, die WWDC Videos zu diesem Thema zu beobachten. Sitzungen 206 und 221 von diesem Jahr. https://developer.apple.com/wwdc/videos/ Erstellen Sie Ihre eigenen Fragen zu SO, wenn Sie sie haben. – swilliams