如何将照片(以及标签和按钮)放入滚动视图中,每次在情节提要中添加新照片时都会延长它
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】:听起来您尝试做的实际上是为UITableView
或UICollectionView
制作的。 UITableView
实际上是 UIScrollView
的子类,这是有充分理由的——内容会根据需要不断扩展。您需要将数据模型更改为您想要显示的任何内容的数组,但这应该相当容易。
【讨论】:
如何将我的数据模型更改为数组?【参考方案2】:我不完全确定您想要实现什么,但如果我是正确的,您的照片数量会动态变化吗?
如果是这种情况,我建议您查看 CollectionViews。这将为您处理滚动视图大小并帮助格式化。
考虑这两个链接 https://developer.apple.com/documentation/uikit/uicollectionview
很棒的教程: https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started
【讨论】:
以上是关于如何将照片(以及标签和按钮)放入滚动视图中,每次在情节提要中添加新照片时都会延长它的主要内容,如果未能解决你的问题,请参考以下文章