2017-02-18 27 views
0

enter image description hereбыстры 8 IOS данные получать урожай в Scrollview при добавлении данных динамически

enter image description here

Привет Я занимаюсь разработкой небольшое приложение IOS, в котором я использую Scrollview с автоматическим layout.Inside прокрутки Я добавляю два больше просмотров. Я использую ограничения IB и автоматического макета. Я добавляю два вида в одну сторону друг за другом вертикально. Я добавил внешние ограничения, такие как конечное, ведущее, верхнее, нижнее пространство. Я также добавил ограничения высоты для обоих представлений. До этого все работает нормально.

Но у моего пассажирского вида есть динамический контент. По этой причине я хочу сделать ограничение по высоте больше, чем равное, а не равное.

мой код: -

@IBOutlet weak var secondView: UIView! 
@IBOutlet weak var scrollView: UIScrollView! 

@IBOutlet weak var passengerView: UIView! 

@IBOutlet weak var detailView: UIView! 

override func viewDidLoad() { 
     super.viewDidLoad() 

let nameLabel = UILabel(frame: CGRect(x: 0, y: (self.name.frame.height * CGFloat(index) + CGFloat(49)), width: 161, height: 32)) 
            let idLabel = UILabel(frame: CGRect(x: 161, y: (self.name.frame.height * CGFloat(index) + CGFloat(49)), width: 161, height: 32)) 
            // nameLabel.text = dsdh?["name"] as? String 
            nameLabel.layer.borderWidth = 1 
            nameLabel.layer.borderColor = UIColor.black.cgColor 
            nameLabel.textAlignment = .center; 
            self.passengerView.addSubview(nameLabel) 
            //idLabel.text = dsdh?["document_Type"] as? String 
            idLabel.layer.borderWidth = 1 
            idLabel.layer.borderColor = UIColor.black.cgColor 
            idLabel.textAlignment = .center; 
            self.passengerView.addSubview(idLabel) 
            self.secondView.addSubview(self.passengerView) 
            self.detailView.frame = CGRect(x: self.detailView.frame.origin.x, y: self.detailView.frame.origin.y + CGFloat(32) , width: self.detailView.frame.size.width, height: self.detailView.frame.size.height) 
             self.secondView.addSubview(self.detailView) 
            //self.scrollView.addSubview(self.detailView) 
            self.secondView.frame = CGRect(x: self.secondView.frame.origin.x, y: self.secondView.frame.origin.y , width: self.secondView.frame.size.width, height: self.secondView.frame.size.height + CGFloat(5)) 

            self.scrollView.addSubview(self.secondView) 
            //self.scrollView.contentSize = CGSize(width: self.scrollView.frame.size.width , height: self.scrollView.frame.size.height + CGFloat(32)) 
            self.scrollView.frame = CGRect(x: self.scrollView.frame.origin.x, y: self.scrollView.frame.origin.y , width: self.scrollView.frame.size.width, height: self.scrollView.frame.size.height + CGFloat(0)) 
            self.view.frame = CGRect(x: self.view.frame.origin.x, y: self.view.frame.origin.y , width: self.view.frame.size.width, height: self.view.frame.size.height + CGFloat(0)) 

} 
+0

Покажите нам минимальный воспроизводимый пример. –

+0

Посмотрев на свое изображение, кажется, что экран можно легко сделать с помощью табличного представления и динамически добавлять ячейки на основе требуемого содержимого. –

+0

Пожалуйста, кто-нибудь из провайдеров мне решение для этого. –

ответ

0

Лучший способ сделать это будет следующим образом:

  1. Реализовать UIScrollView, что является сдерживающим фактором для Leading, Trailing, Top, Bottom ограничений основного вида.
  2. Добавить UIView в UIScrollView и сдержать его до Leading, Trailing, Top, Bottom вашего UIScrollView. Важно также ограничить эту ширину UIView's на ваш основной вид , а не на ваш прокрутку! Таким образом, этот UIView послужит вам Content View для UIScrollView. Этот шаг является обязательным, если вы делаете это в Interface Builder!
  3. Добавить UIStackView в свой Content View (вид из предыдущего шага) и ограничить его в Leading, Trailing, Top, Bottom в Content View.
  4. Добавить все ваши UILabels, Detail View, QR Code View и Passenger View в качестве детей на это UIStackView.
  5. Поскольку вы хотите только ваш Passenger View иметь динамическую высоту вы можете установить UIStackView's ось Vertical и Content Mode к Fill. Затем вы предоставите высоту для всех детей UIStackView, за исключением Passenger View.

Таким образом Content Size из ваших UIScrollView адаптирует на основе высоты UIStackView и высоты UIStackView Willl адаптируют на основе необходимой высоты для Passenger View.

+0

Привет, Стефан, я попытался с этим. когда я добавляю ярлык в пассажирском представлении, это выходит за рамки этого и некоторые из них добавляются в представление ниже. Если вы хотите, чтобы я делился с вами кодом, пришлите мне свой почтовый ящик. –