The UICollectionView Cell photo如何根据Swift3中的内容自动更改UICollectionView Cell的高度?
UICollectionView控制器的下面
import UIKit
import Parse
class homeVC: UICollectionViewController {
// refresher variable
var refresher : UIRefreshControl!
// size of page
//var page : Int = 5
// arrays to hold server information
var uuidArray = [String]()
var contentArray = [String]()
var titleArray = [String]()
// default function
override func viewDidLoad() {
super.viewDidLoad()
// always vertical scroll
self.collectionView?.alwaysBounceVertical = true
// background color
collectionView?.backgroundColor = .white
// title at the top
self.navigationItem.title = PFUser.current()?.username?.uppercased()
// pull to refresh
refresher = UIRefreshControl()
refresher.addTarget(self, action: #selector(homeVC.refresh), for: UIControlEvents.valueChanged)
collectionView?.addSubview(refresher)
// load posts func
loadPosts()
}
// refreshing func
func refresh() {
// reload posts
loadPosts()
// stop refresher animating
refresher.endRefreshing()
}
// load posts func
func loadPosts() {
// request infomration from server
let query = PFQuery(className: "posts")
query.whereKey("username", equalTo: PFUser.current()!.username!)
// query.limit = page
query.findObjectsInBackground (block: { (objects, error) -> Void in
if error == nil {
// clean up
self.uuidArray.removeAll(keepingCapacity: false)
self.contentArray.removeAll(keepingCapacity: false)
self.titleArray.removeAll(keepingCapacity: false)
// find objects related to our request
for object in objects! {
// add found data to arrays (holders)
self.uuidArray.append(object.object(forKey: "uuid") as! String)
self.contentArray.append(object.object(forKey: "content") as! String)
self.titleArray.append(object.object(forKey: "title") as! String)
}
self.collectionView?.reloadData()
} else {
print(error!.localizedDescription)
}
})
}
// cell numb
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return contentArray.count
}
// cell size
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
let size = CGSize(width: self.view.frame.size.width/1, height: self.view.frame.size.width/1)
return size
}
// cell config
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// define cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! Cell
// get content and tile from the contentArrary and titleArray to the text Label in cells
cell.contentTxt.text = contentArray[indexPath.row]
cell.titleTxt.text = titleArray[indexPath.row]
return cell
}
// header config
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
// define header
let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "Header", for: indexPath) as! headerVC
//Implement tap gestures
// tap followings
let bookedTap = UITapGestureRecognizer(target: self, action: #selector(homeVC.bookedTap))
bookedTap.numberOfTapsRequired = 1
header.booked.isUserInteractionEnabled = true
header.booked.addGestureRecognizer(bookedTap)
// get users data with connections to columns of PFuser class
header.fullnameTxt.text = (PFUser.current()?.object(forKey: "username") as? String)?.uppercased()
let avaQuery = PFUser.current()?.object(forKey: "ava") as! PFFile
avaQuery.getDataInBackground { (data, error) -> Void in
header.avaImg.image = UIImage(data: data!)
}
header.button.setTitle("edit profile", for: UIControlState())
return header
}
// tapped followings label
func bookedTap() {
user = PFUser.current()!.username!
category = "booked"
// make reference to followersVC
let followings = self.storyboard?.instantiateViewController(withIdentifier: "bookedVC") as! bookedVC
// present
self.navigationController?.pushViewController(followings, animated: true)
}
的代码有UICollectionView细胞
import UIKit
class Cell: UICollectionViewCell {
@IBOutlet weak var titleTxt: UILabel!
@IBOutlet weak var contentTxt: UITextView!
}
的代码有headerVC
的代码import UIKit
import Parse
class headerVC: UICollectionReusableView {
@IBOutlet weak var avaImg: UIImageView!
@IBOutlet weak var fullnameTxt: UILabel!
@IBOutlet weak var button: UIButton!
@IBOutlet weak var booked: UIButton!
// default func
override func awakeFromNib() {
super.awakeFromNib()
}
// clicked follow button from GuestVC
@IBAction func followBtn_clicked(_ sender: AnyObject) {
let title = button.title(for: UIControlState())
// to follow
if title == "FOLLOW" {
let object = PFObject(className: "follow")
object["follower"] = PFUser.current()?.username
object["following"] = guestname.last!
object.saveInBackground(block: { (success, error) -> Void in
if success {
self.button.setTitle("FOLLOWING", for: UIControlState())
self.button.backgroundColor = .green
// send follow notification
let newsObj = PFObject(className: "news")
newsObj["by"] = PFUser.current()?.username
newsObj["ava"] = PFUser.current()?.object(forKey: "ava") as! PFFile
newsObj["to"] = guestname.last
newsObj["owner"] = ""
newsObj["uuid"] = ""
newsObj["type"] = "follow"
newsObj["checked"] = "no"
newsObj.saveEventually()
} else {
print(error?.localizedDescription ?? String())
}
})
// unfollow
} else {
let query = PFQuery(className: "follow")
query.whereKey("follower", equalTo: PFUser.current()!.username!)
query.whereKey("following", equalTo: guestname.last!)
query.findObjectsInBackground(block: { (objects, error) -> Void in
if error == nil {
for object in objects! {
object.deleteInBackground(block: { (success, error) -> Void in
if success {
self.button.setTitle("FOLLOW", for: UIControlState())
self.button.backgroundColor = .lightGray
// delete follow notification
let newsQuery = PFQuery(className: "news")
newsQuery.whereKey("by", equalTo: PFUser.current()!.username!)
newsQuery.whereKey("to", equalTo: guestname.last!)
newsQuery.whereKey("type", equalTo: "follow")
newsQuery.findObjectsInBackground(block: { (objects, error) -> Void in
if error == nil {
for object in objects! {
object.deleteEventually()
}
}
})
} else {
print(error?.localizedDescription ?? String())
}
})
}
} else {
print(error?.localizedDescription ?? String())
}
})
}
}
有一个在收集很多空间tionView Cell,如何根据SWIFT3中的单词长度自动更改单元格高度?
我已经尝试了很多方法,但这些都是为tableview。
它是否适合你 –
我是工作对不起Prateek,我不知道我应该把代码放在哪里,我只是编程的初学者对不起 –
下面的链接的方法是否可以应用到UICollec tionView Cell? https://theswiftdev.com/2016/08/08/self-sizing-cells-with-rotation-support-in-swift-3/ –