2016-05-18 5 views
1

Ich habe eine Paging Scrollview mit zwei Ansichten, und die erste ist die UIScrollview und die zweite in der Mitte zu füllen. Ich weiß nicht, was falsch läuft, aber es würde nicht auf iPhone6 ​​füllen, aber es passt gut auf iPhone5. Unten ist mein Code:Make UIView füllen UIScrollview

Ansicht Hierarchie

UIView 
     --StackView (Properties -- Axis(Vertical) Alignment(Fill) Distribution(Fill) Spacing(0)) 
      --UIView (Fixed height. 60) 
      --UIView (Main Views Holder) 
       --ScrollView(Content Size: Screen Width * 2, Height: Height left between it margin to the MainView and BottomView) and I notice, that the scrollview keeps remaining size 433 on both iPhone5 and 6. And when I check my storyboard, that's the exact same height there 
       --UIView(Height: 102, Width: Screen Width)BottomView 

@IBOutlet weak var scrollView: UIScrollView! 

var rectanglePhot: UIView! 
var squarePhoto: UIView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    scrollView.contentSize = CGSize(width: self.view.frame.size.width * 2, height: scrollView.frame.size.height) 
    scrollView.autoresizingMask = .FlexibleWidth 
    scrollView.translatesAutoresizingMaskIntoConstraints = false 
    scrollView.backgroundColor = UIColor.greenColor() 

    iniiCameraView() 
} 

func iniiCameraView() { 
    rectanglePhot = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.scrollView.frame.size.height)) <-- This is the problematic one 
    //rectanglePhot = UIView() 
    let specifyY = self.scrollView.frame.size.height - self.view.frame.size.width 
    squarePhoto = UIView(frame: CGRect(x: self.view.frame.size.width, y: specifyY, width: self.view.frame.size.width, height: self.view.frame.size.width)) 
    scrollView.addSubview(rectanglePhot) 
    scrollView.addSubview(squarePhoto) 

    rectanglePhot.backgroundColor = UIColor.blueColor() 
    squarePhoto.backgroundColor = UIColor.brownColor() 

    print("Rect Height ", rectanglePhot.frame.size.height) 
    print("Scroll Height ", scrollView.frame.size.height) 
    print("Specify Y ", specifyY) 
} 

Und das Bild Image Added to Scrollview a index[0]

+0

kann Ihrer Ansicht nicht richtig Rahmen erhalten. set self.view.frame = [[UIScreen mainScreen] Grenzen] –

+0

Wenn dies nicht der Fall ist, sollte "self.view.frame.size.width" schweben und "(self.view.frame.size.width * 2) 'für' UIScrollview contentSize' wäre nicht korrekt –

+0

Überprüfen Sie, ob Ihr scrollview den gesamten Bildschirm ausfüllt, indem Sie scrollview eine Rahmenfarbe geben – jjpp

Antwort

1

den Code in ViewDidAppear hinzufügen. Das automatische Layout wird nach viewDidLoad

+0

Und es hat funktioniert. Ich wusste, dass ich die Ladehierarchie benutzen sollte, aber ich benutzte die falsche. Verwenden Sie 'viewWillAppear' –

+0

Bitte als richtige Antwort markieren, wenn es geholfen hat. – jjpp

+0

Meine Scrollview reagiert jedoch nicht auf Delegaten. Oder liegt es daran, dass der Delegat vom Storyboard festgelegt wurde? –

0

ersetzen

UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.scrollView.frame.size.height)) 

mit:

UIView(frame: CGRect(x: 0, y: 0, width: self.scrollView.bounds.size.width, height: self.scrollView.bounds.size.height)) 

Mit diesem der UIView wird die genaue Größe nehmen von Ihnen Scroll

+0

Diese 'self.scrollView.frame.size.width' dauert etwa anderthalb die contentSize zu –

+0

Meine Antwort aktualisiert, wie ich getestet und funktioniert für mich –

+0

Aktualisiert meine Frage. Weil das nicht funktioniert –

0

angewandt werden, wenn Sie nicht autolayout verwenden wollen: in subview s in viewDidLoad, das ist in Ordnung, aber Sie müssen auch haben ihre frame s in viewDidLayoutSubviews Methode der UIViewController seit Ihrem scrollView anzupassen eine anderer Rahmen nach autolayout passiert.

, wenn Sie mit der Verwendung von autolayout ok sind: verlassen Sie sich nicht auf scrollView für Ihre subview s Sizing, beziehen sich die Größe Ihrer subview s auf die Größe des self.view