2015-08-24 3 views
1

Вот мое оригинальное сообщение о том, как заставить scrollView работать в первую очередь: ScrollView in NIB File Swift. Моя новая проблема заключается в том, что когда внешний, длинный вид, который я помещаю в scrollview, загружается на любое устройство ios меньше, чем iPhone 6+, оно не соответствует ширине. Я попытался изменить ширину представления в viewDidLoad, но он говорит: «Невозможно назначить результат этого выражения».Как изменить ширину рамки представления в файле NIB при просмотре загрузок в соответствии с шириной экрана

GitHub Ссылка: https://github.com/frodgers1207/Testing-ScrollViews

class ScrollViewVC: UIViewController { 

@IBOutlet weak var mainScrollView: UIScrollView! 

@IBOutlet var contentView: UIView! 
@IBOutlet weak var contentViewTitle: UILabel! 
@IBOutlet weak var contentViewPrice: UILabel! 
@IBOutlet weak var contentViewImageContainer: UIScrollView! 

@IBOutlet var imageContainer: UIView! 
@IBOutlet weak var imageOne: UIImageView! 
@IBOutlet weak var imageTwo: UIImageView! 
@IBOutlet weak var imageThree: UIImageView! 

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { 
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    //set the tab bar item's title 
} 
convenience init() { 
    self.init(nibName: "ScrollViewVC", bundle: nil) 
} 
required init(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 

    contentView.frame.width = UIScreen.mainScreen().bounds.width //Error Here: "Cannot assign to the result of this expression" 
    self.mainScrollView.contentSize.height = self.contentView.frame.height 
    self.mainScrollView.contentSize.width = UIScreen.mainScreen().bounds.width 
    self.mainScrollView.addSubview(contentView) 
    self.contentViewImageContainer.addSubview(self.imageContainer) 
    self.contentViewImageContainer.contentSize = self.imageContainer.frame.size 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

Edit: Нужно ли создавать пользовательские UIView с инициализации кадра? Позволит ли я изменить размер моей UIView во время выполнения в зависимости от устройства?

Layout in Interface Builder

Это, как выглядит файл СИБ. Каждый снимок экрана представляет собой представление верхнего уровня, и я добавляю их друг в друга, когда представление загружается, чтобы лучше понять, чего я пытаюсь выполнить.

+0

ли это ошибка компиляции времени? – MendyK

+0

Да, это ошибка времени компиляции. – Frodgers

ответ

2

У вас возникла ошибка, потому что вы пытаетесь напрямую назначить высоту и ширину контента, которые не разрешены. Вы можете установить только .contentSize (который состоит из ширины и высоты).

Вы пытаетесь изменить размер контента или фактический размер прокрутки?

Если вы хотите изменить размер прокрутки, вам необходимо изменить кадр, а не размер содержимого.

Чтобы изменить кадр, который вы хотели бы сделать что-то похожее на это:

self.mainScrollView.frame = CGRect(x: self.mainScrollView.frame.origin.x, y: self.mainScrollView.frame.origin.y, width: UIScreen.mainScreent().bounds.width, height: self.contentView.frame.height) 

Вы должны также положить, что в методе viewWillLayoutSubviews.

С учетом сказанного вы должны иметь возможность выполнить это через ограничения в раскадровке.

После просмотра вашего контента оказывается, что вы ищете что-то более вдоль этих линий:

self.mainScrollView.contentSize = CGSize(width: UIScreen.mainScreen().bounds.width, height: self.mainScrollView.contentSize.height); 
+0

Я пытаюсь изменить размер фактического содержимого. В файле nib он имеет установленную ширину и не находится внутри выходной точки, поэтому я не могу добавить ограничения для ширины. Поэтому, когда я загружаю scrollview на симуляторе телефона меньше, чем iPhone 6+, scrollview имеет горизонтальную прокрутку, а также вертикальную прокрутку. Я только хочу, чтобы он мог прокручивать по вертикали и иметь contentView, ограниченный сторонами scrollView. – Frodgers

+0

См. Мое последнее редактирование. Он должен ограничивать ширину, сохраняя при этом ту же самую высоту –

+0

. Я попытался это сделать, но это просто заставляет часть моего ContentView быть отрезанной, так как я не могу прокручивать ее горизонтально, чтобы увидеть ее. – Frodgers

Смежные вопросы