UIView.Frame Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 this
UIViewKoordinatensystem 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.