2011-10-26 3 views
2

안녕하세요, 저는 MonoTouch를 처음 사용하고있어 문제가 있습니다. 누구든지 하위보기의 위치를 ​​설정하는 방법을 말해 줄 수 있습니까?MonoTouch SubView에서 위치 설정

UIImageView imageview = new UIImageView(this.ImageSource); 

this.AddSubview(imageview); 

this.Subviews[0].Bounds.X = 30; 

난 당신의 사람이 나를 도울 수 있기를 바랍니다 : 나는이 시도했다.

감사

답변

5

.

RectangleF은 참조 유형이 아닌 값 유형 (구조체)입니다. 직접 또는 간접적으로 새 인스턴스를 만들지 않고 .NET의 속성/필드를 변경할 수 없습니다.

즉, Bounds의 속성 가져 오기 도구는 항상을 반환합니다. 따라서 30의 할당은 Subviews[0]이 사용하는 것과 다른 인스턴스에서 수행됩니다.

증명 :

Console.WriteLine (Object.ReferenceEquals (this.Subviews[0].Bounds, 
    this.Subviews[0].Bounds)); // prints 'False' 

그래서 당신은이 경우에해야 할 일이다 : 그래서 새로운 RectangleF (구조체) 인스턴스가 Bounds 속성에 다시 할당

var bounds = this.Subviews[0].Bounds; 
bounds.X = 30.0f; 
this.Subviews[0].Bounds = bounds; 

(로 당신이 설정 한 새로운 가치).

+0

매우 고맙습니다 .--) 이제 작동합니다! – Alex

2

Bounds 속성은보기의 잘, 경계, 당신을 제공합니다. 당신이 그것을 위치를 변경할 경우, 사용 : 코드에서 .NET 문제가있다 (@Krumelur 언급) Bounds 또는 Frame 옆에

var vourView = this.Subviews[0]; 
yourView.Frame = new RectangleF(new PointF(x, y), yourView.Bounds.Size); 

또는

yourView.Center = new PointF(newCenterX, newCenterY)