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

Posted

技术标签:

【中文标题】如何将照片(以及标签和按钮)放入滚动视图中,每次在情节提要中添加新照片时都会延长它【英文标题】:How to approach putting photos( and labels and buttons) into a Scroll View, having it lengthen every time a new photo is added in Storyboard 【发布时间】:2018-01-17 17:52:41 【问题描述】:

现在在我的故事板上我有一个视图,我有一个连接到滚动视图的 segue。我想这样做,一旦按下 segue 按钮,Storyboard 上第一个视图上的内容(图像、标签、按钮)将转到 Scrollview。

有没有一种方法,当我进入滚动视图时,滚动视图的大小将仅为适合第一个视图中新输入的信息所需的大小。

还有一种方法可以保存放入滚动视图的内容,以便用户可以添加到滚动视图以使其更大。如果我需要使用 Firebase 来保存滚动视图信息,我的应用中有 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.
    

非常感谢!感谢您提供任何和所有帮助!

【问题讨论】:

使用collectionView 或tableView .. 这不是scrollView。 raywenderlich.com/136159/… 【参考方案1】:

听起来您尝试做的实际上是为UITableViewUICollectionView 制作的。 UITableView 实际上是 UIScrollView 的子类,这是有充分理由的——内容会根据需要不断扩展。您需要将数据模型更改为您想要显示的任何内容的数组,但这应该相当容易。

【讨论】:

如何将我的数据模型更改为数组?【参考方案2】:

我不完全确定您想要实现什么,但如果我是正确的,您的照片数量会动态变化吗?

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

考虑这两个链接 https://developer.apple.com/documentation/uikit/uicollectionview

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

【讨论】:

以上是关于如何将照片(以及标签和按钮)放入滚动视图中,每次在情节提要中添加新照片时都会延长它的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图中点击按钮 - 错误的单元格

如何将带有 imagepickercontroller 的照片作为缩略图放入 collectionView 单元格

如何在 iOS 中获取多个滚动视图的索引

每次按下按钮时如何将标签增加一?

如何根据单元格数量更改滚动视图大小?

每次重新创建滚动位置后,如何将滚动位置保存在回收站视图中?