我正在尝试制作图像的集合视图,因此每行有3个,其间没有间距.
我的集合视图数据源是:
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return posts.count
}
Run Code Online (Sandbox Code Playgroud)
这就是它在我的故事板中设置的方式(imageView宽度为125,是375屏幕宽度的三分之一):
但是,当我运行应用程序并添加一些照片时,它看起来像这样:
我如何解决这个问题,以便每行看到3张图片?谢谢你的帮助!
我正在尝试将录制视频的文件路径和缩略图从视频保存到文档目录.然后,使用文件路径将这两个值设置为对象,以便我可以使用该对象填充集合视图.使用我目前(下面)的代码,在录制视频后,视频路径将保存到文档目录,视频路径和缩略图将设置为我的Post对象,缩略图会在我的集合视图中正确显示.到目前为止都很好.
但是,只有视频路径在应用程序重新启动之间持续存在,因为它位于目录中,而缩略图则不然.我也想在那里保存缩略图,但我不知道如何去做,因为它似乎只能写入目录的URL.
这是我第一次使用文档目录,所以任何帮助将不胜感激!如何将缩略图(UIImage)与其来自的视频一起写入我的文档目录?
到目前为止,这是我的代码:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let mediaType = info[UIImagePickerControllerMediaType] as! NSString
dismiss(animated: true, completion: nil)
if mediaType == kUTTypeMovie {
// Componenets for a unique ID for the video
var uniqueVideoID = ""
var videoURL:NSURL? = NSURL()
var uniqueID = ""
uniqueID = NSUUID().uuidString
// Get the path as URL
videoURL = info[UIImagePickerControllerMediaURL] as? URL as NSURL?
let myVideoVarData = try! Data(contentsOf: videoURL! as URL)
// Write the video …Run Code Online (Sandbox Code Playgroud) 我一直在关注制作一个instragram-esque应用程序的教程,我在查找如何从Firebase和feed中删除帖子时遇到了很多麻烦.使用此功能将用户选择或拍摄的图像上传到Firebase数据库:
func uploadToFirebase() {
AppDelegate.instance().showActivityIndicator()
let uid = FIRAuth.auth()!.currentUser!.uid
let ref = FIRDatabase.database().reference()
let storage = FIRStorage.storage().reference(forURL: "gs://cloudcamerattt.appspot.com")
let key = ref.child("posts").childByAutoId().key
let imageRef = storage.child("posts").child(uid).child("\(key).jpg")
let data = UIImageJPEGRepresentation(self.previewImage.image!, 0.6)
let uploadTask = imageRef.put(data!, metadata: nil) { (metadata, error) in
if error != nil {
print(error!.localizedDescription)
AppDelegate.instance().dismissActivityIndicator()
return
}
imageRef.downloadURL(completion: { (url, error) in
if let url = url {
// how do I add date: NSDate in here?
let feed = ["userID" : uid,
"pathToImage" : url.absoluteString,
"likes" …Run Code Online (Sandbox Code Playgroud) 我一直在关注制作聊天应用程序的教程,该应用程序有单独的"房间",但它只是每个用户的一个中心列表 - 我正在尝试改变它,以便每个用户看到他们自己的房间列表(房间那个他们创造,并由朋友添加他们的房间).
这是处理创建房间并将其添加到列表的代码:
// Create new room
@IBAction func createRoom(_ sender: Any) {
if let name = newRoomTextField?.text {
let newRoomRef = roomRef.childByAutoId()
let roomItem = [
"name": name
]
newRoomRef.setValue(roomItem)
// How to add room to user's room?
let userRef: FIRDatabaseReference = FIRDatabase.database().reference().child("users")
}
}
private func observeRooms() {
// Observe method to listen for new channels being written to Firebase
roomRefHandle = roomRef.observe(.childAdded, with: { (snapshot) -> Void in
let roomData = snapshot.value as! Dictionary<String, AnyObject>
let …Run Code Online (Sandbox Code Playgroud) 基本上,我在滑出菜单中有一个按钮(它是自己的视图控制器,覆盖部分Origin屏幕,让我们称之为Menu),当按下时,执行模态segue到另一个控制器,比方说Destination.
是否有任何方法按下按钮Menu(转到Destination),我可以解雇Menu回来Origin,然后转向Destination?
这听起来很傻,但我认为我以前见过应用程序.在我的情况下,想要这样做的原因是,一旦我按下"完成" Destination,它就会将该控制器取回Menu,当我希望它只是解雇时Origin.我不能只是执行SEGUE回Origin的Destination.
码:
这是我打开Menu的Origin:
let interactor = Interactor()
@IBAction func openMenu(_ sender: AnyObject) {
performSegue(withIdentifier: "openMenu", sender: nil)
}
@IBAction func edgePanGesture(sender: UIScreenEdgePanGestureRecognizer) {
let translation = sender.translation(in: view)
let progress = MenuHelper.calculateProgress(translationInView: translation, viewBounds: view.bounds, direction: .Right)
MenuHelper.mapGestureStateToInteractor(
gestureState: sender.state,
progress: progress,
interactor: interactor){
self.performSegue(withIdentifier: "openMenu", sender: nil) …Run Code Online (Sandbox Code Playgroud) 我得到一个几乎完全警告的磁盘所以我运行DaisyDisk ..显然Xcode占用了15GB的空间:
iOS设备支持为12.3 gb:
我不知道这是否正常,我从未注意到Xcode /模拟器占用了这么多空间.我需要所有不同的iOS版本吗?我可以采取哪些措施来腾出一些空间?
我有一个图像视图的集合视图,当在 iPhone 7 上的模拟器中运行时,布局是我想要的 - 每行显示 3 个图像,中间没有间距。但是,当我在手机(iPhone 6+)上运行它时,图像之间存在间距。
这些是设置布局的函数:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsetsMake(0,0,0,0)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let imgWidth = view.bounds.width/3.0
let imgHeight = imgWidth
return …Run Code Online (Sandbox Code Playgroud) 我有一个在对象中[[String : AnyObject]]调用的字典数组- 每个字典都保存一个作为 String 的名称和一个作为 AnyObject 的 id。roomsUser
我想用名称填充表视图,因此我尝试循环数组并从字典中获取字符串值。
if let roomDict = myUser.rooms as? [[String : AnyObject]] {
for (roomNames, _) in roomDict {
cell.textLabel?.text = roomNames
}
}
Run Code Online (Sandbox Code Playgroud)
我相对较新,从我在教程中看到的内容以及循环字典时的情况来看,您使用下划线来指定您不需要第二个值。因此,只需获取所有第一个值(在本例中为名称),并将它们设置为roomNames变量即可。
然而我在这里很困惑,因为我不是循环字典,而是循环字典数组。所以我不知道该怎么做。我进行了搜索,看到的结果通常都是关于 JSON 的,但这里的情况并非如此。我怎样才能做到这一点?
谢谢你的帮助!