【问题标题】:Sliding-In UIView From Bottom从底部滑入 UIView
【发布时间】:2016-04-27 00:35:57
【问题描述】:

我正在尝试构建一个具有自定义外观的操作表。我认为最简单的方法是将视图创建为子视图并将子视图顶部的约束分配给超级视图的底部。同时指定一个不透明的封面视图。因此,我可以有不同版本的子视图,我可以初始化必要的子视图并滑动它。

我找不到任何对 Swift 有用的东西,因此,我尝试使用 this obj-c answer 将其转换为 Swift。我用这个实现了不透明的背景,但是翻译约束似乎不起作用。

 var coverView = UIView()

override func viewDidLoad() {
    super.viewDidLoad()

    coverView.backgroundColor = UIColor(white: 0.0, alpha: 0.4)
    coverView.alpha = 1.0
    self.view.addSubview(coverView)
    self.view.bringSubviewToFront(coverView)
} 

//doesn't work
 self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[coverView]|", options: kNilOptions, metrics: nil, views: NSDictionaryOfVariableBindings(coverView)))
 self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[coverView]|", options: kNilOptions, metrics: nil, views: NSDictionaryOfVariableBindings(coverView)))

我对实例化视图和应用过渡动画感到困惑。如果我选择在 ViewController 下创建 UIView,我无法调整约束将子视图的equal width 调整为父视图。

如何使用我创建的 UIView 作为子视图(在 Storyboard 中),然后调整其宽度约束以使 UI 不会出错?另外,如何应用过渡动画使其看起来很自然?

This link should be here...

【问题讨论】:

  • 几年前我写过类似的东西。 github.com/MosheBerman/MBMenuController
  • @EICaptain 您的示例是有道理的,但是,我不希望它显示在我的超级 UIView 上,而是希望它在超级视图(底部下方)下形成,然后滑动它。 . 如何使用约束?我应该尝试获取超级视图的高度,然后放置 UIView 的原点 y 吗?如果您有时间,我将非常感谢您的答复
  • @Moshe 你是一个动作控制器,不是吗?我不会有自定义视图
  • 如果您要添加约束,请确保在您的coverView 中设置translatesAutoSizingMaskIntoConstraints=false
  • @senty - 我的是 UIView 子类。它是预自动布局,但它应该与自动布局一起使用。

标签: ios swift uiview storyboard viewcontroller


【解决方案1】:

我建议您使用 UIView xib 文件并设计您的视图,然后加载到您的视图控制器中。

例如:

第 1 步:

为视图创建 xib

第 2 步: 设置此视图的背景颜色为黑色,不透明度 62% 和 Alpha = 1

第 3 步: 采用新的简单 UIView 并设计您的实际视图并设置约束。

对于Exp:

在您的情况下,在底部设置视图。 第 4 步: 在视图控制器中加载 xib。

class calendarViewController: UIViewController
{
    var popUpView: popUpView!
    override func viewDidLoad() {
       super.viewDidLoad()
       bookingConfirmView = NSBundle.mainBundle().loadNibNamed("popUpView", owner: self, options: nil).first as! popUpView
    // Set Delegate for xib textField
    self.popUpView.Name.delegate = self
    self.popUpView.MobileNo.delegate = self
    }
}

第 5 步:

将此行添加到您要填充视图的位置。

self.view.addSubview(bookingConfirmView)
self.bookingConfirmView.frame = self.view.bounds

【讨论】:

  • 好的。您能否添加一个示例,如何在我的主 UIView 中添加 UIView xib,并调整约束,以便在添加约束的超级视图底部下方创建我的子视图?
  • 现在可以看到exp了。
猜你喜欢
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多