Freigeben über


UIView.Frame Eigenschaft

Definition

Koordinaten der Ansicht relativ zu ihrem Container.

public virtual CoreGraphics.CGRect Frame { [Foundation.Export("frame")] get; [Foundation.Export("setFrame:")] set; }
member this.Frame : CoreGraphics.CGRect with get, set

Eigenschaftswert

Der Wert dieser Eigenschaft ist in Punkten, nicht in Pixeln.

Attribute

Hinweise

Die Frame -Eigenschaft wird in Bezug auf das SuperviewKoordinatensystem des 's ausgedrückt. (Die Bounds Eigenschaft wird als thisUIViewKoordinatensystem ausgedrückt.)

Das folgende Beispiel zeigt nur eine Möglichkeit, wie das FrameKoordinatensystem und die Werte des UIView's von dem des 's Boundsabweichen können. In diesem Fall wird ein UIImageView mit einem anfänglichen Frame Ursprung in {100,100} und der Größe {100,100}platziert. Nach der Drehung verschieben sich sowohl der Ursprung als auch die Größe des Frame Begrenzungsrahmens: der Ursprung, um die Drehung aufzunehmen, und die Größen, um die Diagonale des {100,100} Felds zu enthalten. Die Bounds der flowerView Überreste [{0,0},{100,100}].

var flowerView = new UIImageView(new RectangleF(100, 100, 100, 100)) {
	Image = UIImage.FromFile("flower.png"),
	ContentMode = UIViewContentMode.Center,
	ClipsToBounds = true
};

flowerView.Transform = CGAffineTransform.MakeRotation((float) Math.PI / 4);
view.AddSubview(flowerView);            

Wenn Änderungen an dieser Eigenschaft vorgenommen werden, wird das Center mit dem neuen Speicherort aktualisiert, und das Bounds wird mit den neuen Dimensionen aktualisiert, und es wird ein Neulayout der Unteransichten durchgeführt.

Wenn Sie diese Eigenschaft ändern, wird kein Aufruf von ausgelöst, Draw(CGRect) es sei denn, Sie legen die ContentMode -Eigenschaft auf fest Redraw.

Zumindest unter iOS 6 und höher führt das Ändern dieser Eigenschaft zu einem Neulayout der Unteransichten, auch wenn die Dimensionen identisch sind. Dies kann zu Leistungsproblemen führen, da einige Ansichten (z. B. UITableView) einige sehr teure Berechnungen durchführen können, wenn sie angelegt sind.

Wenn Ihre ContentMode Eigenschaft auf Redrawfestgelegt ist, können Sie eine Neuerstellung Ihrer Ansicht vermeiden, wenn Sie die Center Eigenschaft aktualisieren, anstatt den Frame zu aktualisieren, da die Ansicht nur verschoben wird, ohne einen Aufruf von auszulösen LayoutSubviews().

Diese Eigenschaft ist am impliziten Animationsprotokoll beteiligt und wird außerhalb einer Transaktion geändert, um eine implizite Animation für ihre Werte auszulösen.

Wenn Sie die Transform Eigenschaft in eine Matrix ändern, die die Identitätsmatrix nicht darstellt, kann das Ändern dieser Eigenschaft unbeabsichtigte Folgen haben. In diesen Fällen sollten Sie stattdessen und Bounds direkt aktualisierenCenter.

Gilt für: