从底部滑入 UIView
Sliding-In UIView From Bottom
我正在尝试构建一个自定义外观的操作 sheet。我认为最简单的方法是创建一个视图作为子视图,并将子视图顶部的约束分配给父视图的底部。同时为封面视图分配一些不透明度。因此,我可以有不同版本的子视图,我可以初始化必要的并滑动它。
我找不到对 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 下创建一个 UI 视图,我无法调整约束以将子视图的 equal width
调整为父视图。
如何使用我创建的 UI 视图作为子视图(在 Storyboard 中),然后调整其宽度限制以使 UI 不会出错?另外,如何应用过渡动画使其看起来自然?
我建议您使用 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
我正在尝试构建一个自定义外观的操作 sheet。我认为最简单的方法是创建一个视图作为子视图,并将子视图顶部的约束分配给父视图的底部。同时为封面视图分配一些不透明度。因此,我可以有不同版本的子视图,我可以初始化必要的并滑动它。
我找不到对 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 下创建一个 UI 视图,我无法调整约束以将子视图的 equal width
调整为父视图。
如何使用我创建的 UI 视图作为子视图(在 Storyboard 中),然后调整其宽度限制以使 UI 不会出错?另外,如何应用过渡动画使其看起来自然?
我建议您使用 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