ios - subview 的位置不是我所期望的

标签 ios swift uiview uidatepicker

我添加了一个日期选择器作为 subview ,我期望的是当我按下“更改日期”按钮时,日期选择器会显示在 View 底部。但现实是simulation result .

@IBAction func onUpdateBirthday(sender: UIButton) {
    showChooseBirthday()
}

func showChooseBirthday() {

    view.addSubview(chooseBirthday)

    let bottomConstraint = chooseBirthday.bottomAnchor.constraintEqualToAnchor(view.bottomAnchor)
    let leftConstraint = chooseBirthday.leftAnchor.constraintEqualToAnchor(view.leftAnchor)
    let rightConstraint = chooseBirthday.rightAnchor.constraintEqualToAnchor(view.rightAnchor)
    let heightContraint = chooseBirthday.heightAnchor.constraintEqualToConstant(60)
    NSLayoutConstraint.activateConstraints([bottomConstraint,leftConstraint,rightConstraint,heightContraint])
    view.layoutIfNeeded() // re-layout the view

    self.chooseBirthday.alpha = 0
    UIView.animateWithDuration(0.4) {
        self.chooseBirthday.alpha = 1
    }

这里是 a part of storyboard .

最佳答案

正如其他人所说,您可以将日期选择器添加到 UITextField。下面是一个例子,希望对你有帮助。 Result here

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var birthdayTextField: UITextField!
    var birthdayPicker = UIDatePicker()

    override func viewDidLoad() {
        super.viewDidLoad()
            configureBirthdayPicker()
        }

    func configureBirthdayPicker(){

        birthdayPicker.datePickerMode = .Date
        birthdayPicker.maximumDate = NSDate()
        birthdayPicker.tintColor = UIColor.blackColor()
        birthdayPicker.backgroundColor = UIColor.groupTableViewBackgroundColor()

        let toolBar = UIToolbar()
        toolBar.barTintColor = UIColor.groupTableViewBackgroundColor()
        toolBar.barStyle = UIBarStyle.Default
        toolBar.translucent = true
        toolBar.tintColor = UIColor.blueColor()
        toolBar.sizeToFit()

        let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker:")
        let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
        let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelPicker:")

        toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
        toolBar.userInteractionEnabled = true

        birthdayTextField.inputView = birthdayPicker
        birthdayTextField.inputAccessoryView = toolBar

    }

    func donePicker(doneclicked:UIButton){
        print("done clicked")
        birthdayTextField.resignFirstResponder()
    }

    func cancelPicker(cancelclicked:UIButton){
        print("cancel clicked")
        birthdayTextField.resignFirstResponder()
    }
}

关于ios - subview 的位置不是我所期望的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808006/

相关文章:

ios - 标签栏的底部未正确着色

ios - 在两个可移动 uiview 之间画线

ios - 如何在ios中正确解析json?

javascript - VueJS : prevent bouncing and zooming on IOS10+ with routing

ios - 谁能告诉 API 添加灯泡 Philips Hue Bridges?

ios - 即使设备有 Apple Watch 目标,我是否可以在没有 XCode 配对 Apple Watch 的设备上运行我的应用程序?

ios - 如何在单击按钮时在 UITableView 中添加单元格?

iphone - UIButton 阴影看起来不正确

ios - 我可以让我的 UIView 的框架匹配它的曾祖 parent 吗?

ios - 存储在序列化 View 中的子类 UILabel 不存储自定义变量