小编Kin*_*Tim的帖子

对齐集合视图单元格以精确匹配每行3个

我正在尝试制作图像的集合视图,因此每行有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张图片?谢谢你的帮助!

xcode ios uicollectionview swift

11
推荐指数
5
解决办法
2万
查看次数

如何将UIImage保存到文档目录?

我正在尝试将录制视频的文件路径和缩略图从视频保存到文档目录.然后,使用文件路径将这两个值设置为对象,以便我可以使用该对象填充集合视图.使用我目前(下面)的代码,在录制视频后,视频路径将保存到文档目录,视频路径和缩略图将设置为我的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)

avfoundation ios swift

6
推荐指数
1
解决办法
8686
查看次数

如何从Firebase(Swift)中删除孩子

我一直在关注制作一个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)

ios firebase swift firebase-realtime-database

5
推荐指数
1
解决办法
8917
查看次数

Firebase - 获取对存储在childByAutoID下的值的引用

我一直在关注制作聊天应用程序的教程,该应用程序有单独的"房间",但它只是每个用户的一个中心列表 - 我正在尝试改变它,以便每个用户看到他们自己的房间列表(房间那个他们创造,并由朋友添加他们的房间).

这是处理创建房间并将其添加到列表的代码:

// 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)

ios firebase swift firebase-realtime-database

4
推荐指数
1
解决办法
826
查看次数

取消发送方视图控制器后执行segue

基本上,我在滑出菜单中有一个按钮(它是自己的视图控制器,覆盖部分Origin屏幕,让我们称之为Menu),当按下时,执行模态segue到另一个控制器,比方说Destination.

是否有任何方法按下按钮Menu(转到Destination),我可以解雇Menu回来Origin,然后转向Destination

这听起来很傻,但我认为我以前见过应用程序.在我的情况下,想要这样做的原因是,一旦我按下"完成" Destination,它就会将该控制器取回Menu,当我希望它只是解雇时Origin.我不能只是执行SEGUE回OriginDestination.

码:

这是我打开MenuOrigin:

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)

ios swift

4
推荐指数
1
解决办法
7286
查看次数

Xcode/Simulator占用15GB的空间是否正常?

我得到一个几乎完全警告的磁盘所以我运行DaisyDisk ..显然Xcode占用了15GB的空间:

http://imgur.com/a/cTIZZ

iOS设备支持为12.3 gb:

http://imgur.com/a/IcE5X

我不知道这是否正常,我从未注意到Xcode /模拟器占用了这么多空间.我需要所有不同的iOS版本吗?我可以采取哪些措施来腾出一些空间?

xcode ios-simulator

2
推荐指数
1
解决办法
2510
查看次数

如何让集合视图中的图像视图根据屏幕大小自行调整大小?

我有一个图像视图的集合视图,当在 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)

ios uicollectionview swift

1
推荐指数
1
解决办法
5062
查看次数

迭代字典数组以获取所有键

我有一个在对象中[[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 的,但这里的情况并非如此。我怎样才能做到这一点?

谢谢你的帮助!

ios swift

1
推荐指数
1
解决办法
3681
查看次数