如何将照片(以及标签和按钮)放入滚动视图中,每次在故事板中添加新照片时都会延长它

问题描述:

现在在我的故事板上我有一个视图,我有一个连接到滚动视图的segue 。我想让它在事件板上的第一个视图上的东西(图像,标签,按钮)会在按下segue按钮后进入滚动视图。如何将照片(以及标签和按钮)放入滚动视图中,每次在故事板中添加新照片时都会延长它

是否有一种方法,当我进入滚动视图时,滚动视图将只是它需要的大小以适应来自第一视图的新输入的信息。

也有一种方法,我可以保存放入滚动视图的内容,以便用户可以添加到滚动视图以使其更大。如果我需要使用它来保存滚动视图信息,我的应用中有Firebase。

下面是我的两个视图控制器(我没有视图控制器为我的滚动视图,但我可以做一个,如果我需要它)和我的故事板的屏幕截图,如果这将帮助!

import UIKit 

class PhotoShareViewController: UIViewController { 

    @IBOutlet weak var imageView: UIImageView! 
    @IBOutlet weak var contentTextView: UITextView! 

    @IBOutlet weak var thatTextField: UITextField! 
    @IBOutlet weak var thisTextField: UITextField! 

    var presenter: PhotoShareModuleInterface! 
    var image: UIImage! 

    @IBAction func thisUploadPhoto(_ sender: Any) { 
     if thisTextField.text != "" && thatTextField.text != "" { 
      performSegue(withIdentifier: "segue", sender: nil) 
     } 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

     let photoShareLabelViewController = segue.destination as! PhotoShareLabelViewController 

     photoShareLabelViewController.thisString = thisTextField.text! 
     photoShareLabelViewController.thatString = thatTextField.text! 
     photoShareLabelViewController.imageLoaded = image 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 

     imageView.image = image 
    } 

    override var prefersStatusBarHidden: Bool { 
     return true 
    } 

    @IBAction func didTapCancel(_ sender: AnyObject) { 
     presenter.cancel() 
     presenter.pop() 
    } 

    @IBAction func didTapDone(_ sender: AnyObject) { 
     guard let message = thatTextField.text, !message.isEmpty else { 
      return 
     } 
     guard let messageOne = thisTextField.text, !messageOne.isEmpty else { 
      return 
     } 

     presenter.finish(with: image, content:message) 
     presenter.dismiss() 
    } 
} 

extension PhotoShareViewController: PhotoShareViewInterface { 

    var controller: UIViewController? { 
     return self 
    } 
} 

import UIKit 

class PhotoShareLabelViewController: UIViewController { 

    @IBOutlet weak var thisLabel: UILabel! 
    @IBOutlet weak var thatLabel: UILabel! 
    @IBOutlet weak var thisButton: UIButton! 
    @IBOutlet weak var thatButton: UIButton! 
    @IBOutlet weak var changedImage: UIImageView! 

    var thisCounter = 0 
    var thatCounter = 0 

    @IBAction func pressedDoneButtonLabel(_ sender: Any) { 
     print("done") 
    } 

    var presenter: PhotoShareModuleInterface! 
    var imageLoaded: UIImage! 

    @IBAction func pressedThisButton(_ sender: Any) { 
     thisCounter += 1 
     print(thisCounter) 
    } 

    @IBAction func pressedThatButton(_ sender: Any) { 
     thatCounter += 1 
     print(thatCounter) 
    } 

    var thisString = String() 
    var thatString = String() 

    @IBAction func pressedButtonDone(_ sender: Any) { 
     print("done") 
    } 

// @IBAction func pressedButtonCancel(_ sender: Any) { 
//  print("cancel") 
// } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     thisLabel.text = thisString 
     thisButton.setTitle(thisString, for: UIControlState.normal) 

     thatLabel.text = thatString 
     thatButton.setTitle(thatString, for: UIControlState.normal) 

     changedImage.image = imageLoaded 
     // Do any additional setup after loading the view. 
    } 

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

enter image description here

非常感谢!任何和所有的帮助表示赞赏!

+0

使用的CollectionView或的tableView ..不滚动型这一点。 https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started – murphguy

这听起来像你试图做的事实际上是为UITableViewUICollectionViewUITableView实际上是UIScrollView的一个子类,理由很充分 - 内容会根据需要不断扩展。您需要将您的数据模型更改为任何要显示的数组,但这应该相当容易。

+0

如何将我的数据模型更改为数组? – priM

我不完全确定你想要达到什么效果,但如果我是正确的,你的照片数量是动态变化的?

如果是这种情况,我建议你看看CollectionViews。这将处理您的滚动视图大小并帮助格式化。

考虑这两个环节 https://developer.apple.com/documentation/uikit/uicollectionview

伟大的教程: https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started