这更多的是如何实现这一目标的问题,而不是具体的解决方案。我想要一个标签,允许按钮和文本字段内联并换行到下一行。一个示例是 iOS 快捷方式应用程序,您可以在其中键入文本所在的同一块,并且文本字段会沿同一行换行。它是一个文本字段,因为有一个插入符号。
从高层次来看,它可能看起来像这样:
其中每个视图都遵循该线并在需要时换行到下一个视图。
我最初考虑使用带有样式链接的 NSAttributedString,该链接可以充当按钮,也可以打开文本字段进行输入。我尝试了这个并得到了一些有效的东西,但它与 iOS 快捷方式应用程序不同,其中文本字段位于文本中。我也考虑过使用 textkit,但我还没有做到这一点,因为我不确定这是正确的方法。
感谢您提供任何想法或解决方案。
我想过另一种方法来实现这一目标,但我不知道它是否有效。这个想法是使用文本字段的集合视图。某些文本字段将共享相同的 LayoutManager,以便文本在文本字段之间共享。我必须计算要创建多少个文本字段,以便它们沿着 collectionView 流动
在图像中,Label 1由 1 个禁用编辑的文本字段组成。TextField 1由 3 个启用编辑的文本字段组成,并且这三个文本字段将共享相同的 LayoutManager。Label 2由 2 个带有共享布局管理器的文本字段组成,但禁用编辑。
使用这种方法意味着计算为每个“块”(标签或文本字段)创建多少个文本字段,并在每次内容更改时更新它。通过这种方法,我只考虑标签和文本字段,但可以在其他时间添加按钮。
我刚刚开始这样做,但意识到共享布局管理器会禁用编辑,所以我不知道这是否可以再实现。
谢谢
我的集合视图单元格有一个渐变背景,每个渐变根据单元格是什么标签而不同(例如圣诞节是紫色渐变,生日是绿色渐变)但是当滚动集合视图时,渐变会不断改变单元格. 有没有办法解决这个问题?
这是我用来将渐变设置为背景视图的代码。它在cellForItemAt
cell.mainView.setGradientBackground(colours: self.getColourFromTag(tag: self.lists[indexPath.item].tag))
Run Code Online (Sandbox Code Playgroud)
.setGradientBackground是 UIView 的扩展,它只是为背景设置渐变。此处显示:
func setGradientBackground(colours: [CGColor]) {
    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = bounds
    gradientLayer.colors = colours
    gradientLayer.locations = [0.0, 1.0]
    gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
    gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)
    layer.insertSublayer(gradientLayer, at: 0)
}
Run Code Online (Sandbox Code Playgroud)
我使用下面的方法来获取渐变中的颜色
func getColourFromTag(tag: String) -> [CGColor] {
    if tag == "Christmas" {
        return [Colours.gradients.festive.start.cgColor, Colours.gradients.festive.end.cgColor]
    }else if tag == "Birthday" {
        return [Colours.gradients.lime.start.cgColor, Colours.gradients.lime.end.cgColor]
    }else if tag == "Valentines Day" {
        return [Colours.gradients.strawberry.start.cgColor, Colours.gradients.strawberry.end.cgColor]
    }else …Run Code Online (Sandbox Code Playgroud) 我试图通过使用while循环每2秒拍一张照片.但是当我尝试这个时,屏幕会冻结.
这是拍摄照片的功能:
func didPressTakePhoto(){
    if let videoConnection = stillImageOutput?.connectionWithMediaType(AVMediaTypeVideo){
        videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
        stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {
            (sampleBuffer, error) in
            if sampleBuffer != nil {
                let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
                let dataProvider  = CGDataProviderCreateWithCFData(imageData)
                let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, .RenderingIntentDefault)
                let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right)
                UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
                //Adds every image taken to an array each time the while loop loops which will then be used to create a timelapse.
                self.images.append(image)
            }
        })
    }
}
Run Code Online (Sandbox Code Playgroud)
为了拍照,我有一个按钮,当一个名为count的变量等于0时,将在while循环中使用该函数,但是当按下结束按钮时,该变量等于1,因此while循环结束.
这就是startPictureButton动作的样子: …
swift ×4
ios ×2
freeze ×1
gradient ×1
swipe ×1
textkit ×1
timelapse ×1
uitextfield ×1
while-loop ×1