【问题标题】:Show view from bottom with options使用选项从底部显示视图
【发布时间】:2019-08-03 21:19:38
【问题描述】:

当我导航到某个视图控制器时,我想要一个带有类似选项的底部视图...

我怎么会有这样的看法...?

编辑 1

我尝试按照链接中的建议使用表格视图而不是集合视图来实现。这就是我所拥有的......

向下拖动视图会给我这个视图...

但我来到视图,我不希望向上滑动视图覆盖视图的整个长度,但它应该只与第一个屏幕截图中给出的大小相同。我怎样才能做到这一点..?

【问题讨论】:

  • 你尝试过什么?
  • 我没有尝试过任何东西......因为我对尝试什么感到困惑......比如这是原生 ios 功能还是自定义......
  • 它不是一个特性,你必须自己创建。我几乎像这样制作了demo。使用它并根据您的要求进行开发。
  • 我打开了文件@dahiya_boy 但是里面除了一个gif和一个自述文件之外什么都没有……所以我该如何使用它……?

标签: ios swift uiview xib


【解决方案1】:

假设您使用的是我在评论中发布的同一个 github 项目。

先清除垃圾:文件->TDStickyView

  1. 奥特莱斯

    @IBOutlet weak var viewLeft: UIView!
    @IBOutlet weak var viewRight: UIView!
    private var angel : CGFloat = 0
    
  2. 来自func viewSetup

    :
    :
    // DELETE THESE 2 LINES AND THESE FUNC TOO.
    self.setCursors()  
    self.rotateView(addAngel: 0)
    
  3. 来自handleGesture

    if aNewOrigin.y <= 60 {
        self.rotateView(addAngel: .pi/8)
    }
    else if aNewOrigin.y >= 60 && aNewOrigin.y < self.frame.height - 100 {
        self.rotateView(addAngel: 0)
    }
    else {
        self.rotateView(addAngel: -.pi/8)
    }
    

现在为 cursorView 添加约束,

  1. 对于左光标

  1. 用于右光标

现在项目已经稳定了,我们来谈谈您的需求。

  1. 在初始化时更改 tableView 的大小。

viewSetup

//topMostY = UIApplication.shared.statusBarFrame.height
topMostY = parentVC.view.center.y
// It is the top most Y position of tableview and it can't go above it. Change it according to your requirement.
  1. 完全隐藏 TableView。

handleGesture

else if sender.state == .ended {
    self.panGestureColView.isEnabled = false
    if velocity.y > 0 {
        // go down
        // UIView.animate(withDuration: 0.3) {
        //     self.frame = CGRect(origin: CGPoint(x: 0, y: self.parentFrame.size.height - self.bottomMostY), size: self.frame.size)
        // }

        // Change above commented UIView.animate with below UIView.animate

        UIView.animate(withDuration: 0.3, animations: {
            self.frame = CGRect(origin: CGPoint(x: 0, y: self.parentFrame.size.height), size: self.frame.size)
        }) { (isFin) in
            self.removeFromSuperview()
        }

    }
    else if velocity.y < 0 {
        // go up
        UIView.animate(withDuration: 0.3) {
            self.frame = CGRect(origin: CGPoint(x: 0, y: self.topMostY), size: self.frame.size)
        }
    }
}

就是这样。

【讨论】:

  • 谢谢@dahiya_boy。有效!只是一个更正..实际上我不希望 tableview 完全隐藏,而是希望它的一部分在下降时保持可见。为此,在 handleGesture 方法中,不是您添加的新代码,而是需要注释的代码。但是再次感谢...:)
  • @asd2 visualEffectView 可以是深色或浅色,您可以从情节提要中进行更改。我使用了 VisualEffect,因为它在设计上看起来不错,但是如果您不喜欢 visualEffectView,请删除它并使用您的视图并提供您选择的背景颜色。
猜你喜欢
  • 2017-04-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多