2016-07-28 26 views
1

Ändern der Größe Ich bin nicht in der Lage, die Subview zu handhaben Ändern der Größe richtig:Autoresize Subviews wenn die Super

Angenommen, ich habe eine benutzerdefinierte UIView Klasse, im Inneren eine UIImageView enthält.

Zunächst stellte ich die UIViews wie die Anhänger up:

// width and height are UIImage width height 
// it is possible that the UIImage width height is larger than the container 

self.imageView.frame = CGRectMake(0 ,0, width, height) 
self.imageView.backgroundColor = UIColor.redColor() 
self.imageView.contentMode = UIViewContentMode.ScaleAspectFit 
self.imageView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight,.FlexibleTopMargin, .FlexibleLeftMargin, .FlexibleRightMargin, .FlexibleBottomMargin] 
addSubview(self.imageView) 

self.frame = CGRectMake(0, 0, width, height) 
self.backgroundColor = UIColor.greenColor() 

die diese Gewohnheit UIView als MyView Lassen nennen.

Und dann, wenn ich diese "myView" in einem ViewController platzieren möchte. Ich tat folgendes:

myView.frame = CGRectMake(xPos, yPos, 100, 100) 
myView.autoResizeSubviews = true 

Und ich fand, dass, nachdem ich das getan habe, habe ich die folgenden Ergebnisse. MyView place at the correct place with correct size, but the internal UIImageView got even a smaller size.

Warum das passieren? Und wie lassen sich alle Unteransichten in MyView entsprechend dem Rahmen von MyView korrekt skalieren?

Danke.

Antwort

0

wenn Sie nicht verwenden Auto-Layout dann tauschen unten Linien

stellen Sie Sie bitte Rahmen nach Selbst setzen (UIView) Zuordnung

self.frame = CGRectMake(0, 0, width, height) 
self.imageView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight,.FlexibleTopMargin, .FlexibleLeftMargin, .FlexibleRightMargin, .FlexibleBottomMargin] 
addSubview(self.imageView) 
2

Oh, fand ich, dass die automatischen Größen Maske sein sollte wie folgt einstellen:

Damit kann der Anker oben und links fixiert werden und die Größenänderung an den anderen Rändern ermöglicht werden.