Sliding-In UIView From Bottom

泄露秘密 提交于 2019-12-08 11:17:39

问题


I am trying to build a custom-looking action sheet. I thought the easiest way would be creating a view as a subview and assign constraint of subview's top to superview's bottom. And at the same time assigning a cover view with some opacity. Thus, I could have different versions of subview and I can initialise the necessary one and slide it.

I couldn't find anything useful for Swift, so, using this obj-c answer, I tried to convert it to Swift. I achieved the opaque background with this however translating constraints doesn't seem to work.

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

I got confused on instantiating the view and applying transition animation. If I choose to create a UIView under ViewController, I cannot adjust constraints to adjust equal width of subview to superview.

How can I use the UIView that I created as a Subview (in Storyboard) and then adjust its width constraints so the UI doesn't bug? Also, how can I apply the transition animation so it seems natural?

This link should be here...


回答1:


I suggested you use UIView xib file and design your view then load in your view controller.

Ex:

Step 1:

Create xib for view

Step 2: Set background color black for this view, opacity 62% and Alpha = 1

Step 3: Take new simple UIView and Design your actual view and set constraint.

For Exp:

In your case set view in bottom. Step 4: Load xib in view controller.

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
    }
}

Step 5:

Add this line to where you want to populate view.

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


来源:https://stackoverflow.com/questions/36863138/sliding-in-uiview-from-bottom

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!