다음을 통해 공유


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 은 의 크기 및 크기{100,100}에서 {100,100} 시작된 초기 Frame 를 사용하여 배치됩니다. 회전하면 경계 상자의 Frame 원점과 크기가 모두 바뀝니다. 회전을 수용할 원본과 상자의 {100,100} 대각선을 포함하기 위한 크기입니다. Bounds 남아 있는 [flowerView{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 새 차원으로 업데이트되고 하위 보기의 레이아웃이 다시 수행됩니다.

속성을 로 설정하지 않는 한 이 속성을 Redraw변경해도 에 대한 호출 Draw(CGRect)ContentMode 트리거되지 않습니다.

적어도 iOS 6 이상에서 이 속성을 변경하면 차원이 같더라도 하위 보기의 레이아웃이 다시 지정됩니다. 이로 인해 일부 보기(예: UITableView)가 배치될 때 매우 비용이 많이 드는 계산을 수행할 수 있으므로 성능 문제가 발생할 수 있습니다.

ContentMode 속성이 로 Redraw설정된 경우 프레임을 업데이트하는 대신 속성을 업데이트 Center 하면 에 대한 호출을 트리거하지 않고 보기만 이동할 수 있으므로 보기 다시 그리기를 방지할 LayoutSubviews()수 있습니다.

이 속성은 암시적 애니메이션 프로토콜에 참여하며 트랜잭션 외부에서 변경하면 해당 값에 대한 암시적 애니메이션이 트리거됩니다.

속성을 ID 행렬을 Transform 나타내지 않는 행렬로 변경하는 경우 이 속성을 변경하면 의도하지 않은 결과가 발생할 수 있습니다. 이러한 경우 대신 및 Bounds 를 직접 업데이트 Center 해야 합니다.

적용 대상