Поделиться через


UIView.Frame Свойство

Определение

Координаты представления относительно его контейнера.

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

Значение свойства

Значение этого свойства — в точках, а не в пикселях.

Атрибуты

Комментарии

Свойство Frame выражается в терминах Superviewсистемы координат . (Свойство Bounds выражается в виде thisUIViewсистемы координат.)

В следующем примере показан только один способ, которым Frameсистема координат и значения могут отличаться от UIViewBoundsсистемы координат . В этом случае UIImageView помещается с начальным Frame{100,100} значением и размером {100,100}. После поворота смещаются как источник, так и размер ограничивающего Frame прямоугольника: источник для размещения поворота и размеры, чтобы содержать диагональ коробки {100,100} . flowerView Останков Bounds [{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);            

При внесении изменений в это свойство Center объект обновляется с учетом нового расположения, а Bounds обновляется новыми измерениями и выполняется изменение макета вложенных представлений.

Изменение этого свойства не приведет к вызову , Draw(CGRect) если для свойства не задано значение RedrawContentMode .

По крайней мере в iOS 6 и более поздних версиях изменение этого свойства приводит к изменению макета вложенных представлений, даже если размеры одинаковы. Это может привести к проблемам с производительностью, так как некоторые представления (например, UITableView) могут выполнять очень дорогостоящие вычисления при их создании.

Если свойству ContentModeRedrawприсвоено значение , можно избежать перерисовки представления, если вы обновите Center свойство вместо обновления Frame, так как представление будет просто перемещаться, не вызывая вызов LayoutSubviews().

Это свойство участвует в протоколе неявной анимации, изменение его вне транзакции приведет к активации неявной анимации для его значений.

Если изменить Transform свойство на матрицу, которая не представляет матрицу удостоверений, изменение этого свойства может иметь непредвиденные последствия. В таких случаях следует обновить Center и Bounds напрямую.

Применяется к