Compartilhar via


UIView.Frame Propriedade

Definição

Coordenadas da exibição em relação ao contêiner.

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

Valor da propriedade

O valor dessa propriedade está em pontos, não em pixels.

Atributos

Comentários

A Frame propriedade é expressa em termos do Superviewsistema de coordenadas do . (A Bounds propriedade é expressa em termos do sistema de thisUIViewcoordenadas do .

O exemplo a seguir mostra apenas uma maneira em que o sistema de coordenadas e os Framevalores podem variar de acordo com o UIViewdo .Bounds Nesse caso, um UIImageView é colocado com uma inicial Frame originada em {100,100} e de tamanho {100,100}. Depois de girado, a origem e o Frame tamanho da caixa delimitadora mudam: a origem para acomodar a rotação e os tamanhos para conter a diagonal da {100,100} caixa. O Bounds dos flowerView restos mortais [{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);            

Quando as alterações são feitas nessa propriedade, o Center é atualizado com o novo local e o Bounds é atualizado com as novas dimensões e um novo layout das subexibições é executado.

Alterar essa propriedade não disparará uma chamada para Draw(CGRect) , a menos que você defina a ContentMode propriedade como Redraw.

Pelo menos no iOS 6 e posterior, alterar essa propriedade causa o novo layout das subexibições, mesmo que as dimensões sejam as mesmas. Isso pode causar problemas de desempenho, pois alguns modos de exibição (como UITableView) podem executar alguns cálculos muito caros quando são dispostos.

Se sua ContentMode propriedade estiver definida Redrawcomo , você poderá evitar uma nova execução do modo de exibição se atualizar a Center propriedade em vez de atualizar o Frame, pois ele apenas moverá o modo de exibição sem disparar uma chamada para LayoutSubviews().

Essa propriedade participa do protocolo de animação implícita, alterá-la fora de uma transação disparará uma animação implícita para seus valores.

Se você alterar a Transform propriedade para uma matriz que não representa a matriz de identidade, alterar essa propriedade poderá ter consequências não intencionais. Nesses casos, você deve atualizar Center e Bounds diretamente.

Aplica-se a