Ich habe eine Bildlaufansicht in meiner App, durch Storyboard initialisiert, und ich versuche, den Rahmen zu ändern. Alles scheint zu funktionieren, aber wenn der Rahmen und die Inhaltsgröße nur kurze Zeit nachdem sie gesetzt sind, aufgerufen werden, aber nachdem meine Methode zurückkehrt, sind sie anders! Hier ist der Code:UIScrollView geheimnisvoll ändern Rahmen und Inhalt Größe
CGFloat inputHeight = inputView.frame.size.height;
originalContentHeight = self.scrollableContentView.frame.size.height;
NSLog(@"%f", self.scrollableContentView.frame.size.height-inputHeight);
[self.scrollableContentView setFrame:CGRectMake(self.scrollableContentView.frame.origin.x, self.scrollableContentView.frame.origin.y, self.scrollableContentView.frame.size.width, self.scrollableContentView.frame.size.height-inputHeight)];
NSLog(@"%f", self.scrollableContentView.frame.size.height);
NSLog(@"%@", self.scrollableContentView);
Die Ausgabe dieser Protokolle wird als erwartet, das heißt:
<UIScrollView: 0x808de00; frame = (0 0; 320 81); ... >
Allerdings, wenn ich einen Haltepunkt in einem anderen Verfahren festgelegt, durch die Zeit, die aufgerufen wird, dies zeigt die Scroll Anmeldung:
<UIScrollView: 0x808de00; frame = (0 0; 320 416); ... >
Zusätzlich werden die Inhalte Größenänderungen als solche:
(width=320, height=416)
zu
(width=320, height=504)
Beide Werte scheinen automatisch auf die Werte werden zurückkehrt sie haben, wenn die Ansicht first out gelegt wird. Ich habe Haltepunkte im Getter und Setter meiner Bildlaufansicht gesetzt und kann keine unerwarteten Zugriffe finden, daher bin ich zu dem Schluss gekommen, dass die Änderung intern erfolgen muss. Ist das eine berechtigte Schlussfolgerung? Was könnte schief gehen?
Können die Autoresizer-Federn auf eine einstellbare Höhe eingestellt werden? – Jamie
Wo würde ich das finden? – Jumhyn
Dies ist wegen des automatischen Layouts. Schalten Sie diese Option aus oder ändern Sie die Größe der Bildlaufansicht, indem Sie Constraints anpassen und nicht Frames festlegen. – rdelmar