7 Stimmen

Autolayout bricht UIView-Animation

Ich habe Probleme damit, meine App sowohl auf dem iPhone 5 als auch auf den kleineren iPhones davor zum Laufen zu bringen. Wäre glücklich, iOS6 erfordern und Autolayout verwenden, weil das funktioniert gut.

Allerdings hat die App 4 Tasten, die regelmäßig die Positionen wechseln, so dass ich jede Taste eine andere Position aus einem Array zuweisen und dann die Bewegung mit etwas wie diesem animieren:

[UIView animateWithDuration:0.5 animations:^{
    button1.center = [[locations objectAtIndex:0] CGPointValue];
    button2.center = [[locations objectAtIndex:1] CGPointValue];
    button3.center = [[locations objectAtIndex:2] CGPointValue];
    button4.center = [[locations objectAtIndex:3] CGPointValue];
}];

Dies funktioniert nicht mit Autolayout. Es ändert sich nichts. Das Beste, was ich bekommen habe, ist, dass es zu einer Position animieren wird, dann sofort wieder einrasten.

Wenn ich Autolayout entfernen jedoch alle Tasten sind zerknittert auf den kleineren iPhones, und weil ich Punkte durch die iPhone 5 Größe eingestellt sie am Ende unten, setzen die untere Zeile aus dem Bildschirm. Ich hatte ursprünglich andere CGPoint Zahlen, die ich von Interface Builder bekam, aber sie waren "falsch", obwohl ich denke, sie waren "falsch", weil sie die Zahlen für Autolayout zu verwenden waren. Das Array, nur damit Sie sehen können:

buttonLocations = [NSArray arrayWithObjects:
        [NSValue valueWithCGPoint:CGPointMake(57, 523)],
        [NSValue valueWithCGPoint:CGPointMake(109, 523)],
        [NSValue valueWithCGPoint:CGPointMake(57, 471)],
        [NSValue valueWithCGPoint:CGPointMake(109, 471)],
        nil];

Was sollte ich tun, um dieses Problem zu beheben? Es scheint nicht sehr effizient zu sein, für jede Gerätegröße unterschiedliche Punkte zu setzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X