2016-05-18 2 views
1

У меня есть прокрутка пейджинга с двумя видами, а первая - заполнить UIScrollview, а вторая - посередине. Я не знаю, что пойдет не так, но на iPhone6 ​​это не будет, но это отлично подходит для iPhone5. Ниже мой код:Сделать UIView заполнять UIScrollview

Просмотр иерархии

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) 
} 

И образ Image Added to Scrollview a index[0]

+0

может быть ваша точка зрения не получает правильный кадр. set self.view.frame = [[UIScreen mainScreen] bounds] –

+0

Если это не так, 'self.view.frame.size.width' должно быть плавающим и' (self.view.frame.size.width * 2) 'для' UIScrollview contentSize' было бы неверно либо –

+0

проверить, заполняется ли ваш scrollview весь экран, задавая цвет рамки для scrollview – jjpp

ответ

1

Добавьте код в viewdidappear. Autolayout будет применяться после того, как viewdidload

+0

И это сработало. Я знал, что должен использовать иерархию загрузки, но использовал неправильный. Использовал 'viewWillAppear' –

+0

Пожалуйста, отметьте как правильный ответ, если это помогло. – jjpp

+0

Мой scrollview не отвечает на делегатов. Или это потому, что делегат был установлен из раскадровки? –

0

Заменить

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

С:

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

с этим UIView примет точный размер вы Scrollview

+0

Этот 'self.scrollView.frame.size.width' занимает примерно полтора contentSize тоже –

+0

Обновлен мой ответ, когда я тестировал и работает для меня –

+0

Обновлен мой вопрос. Потому что это не работает –

0

, если вы не хотите использовать autolayout: добавить subview с в viewDidLoad, что это хорошо, но вы также должны корректировать свои frame с в viewDidLayoutSubviews методе UIViewController с момента scrollView будет иметь другой рама после autolayout проходит.

, если вы хорошо с помощью autolayout: не полагайтесь на scrollView для изменения размера subview с, относятся размер ваших subview с до размера self.view