首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS,Swift:创建一个有2个视图和动画的分割屏幕

IOS,Swift:创建一个有2个视图和动画的分割屏幕
EN

Stack Overflow用户
提问于 2016-08-16 16:50:17
回答 1查看 1.3K关注 0票数 0

我绝对是个学Swift的IOS新手。

我正在尝试创建一个应用程序,上面有一个日历UI控件(已经开始工作了),底部有一个列表视图。

和底部的照片完全一样(我为这张巨大的照片道歉)。

现在,就像日历应用程序一样,屏幕将只显示日历控件,但是如果您单击一个按钮-列表视图将显示在底部,屏幕将成为分裂。

我能想到这样做的唯一方法是在代码中生成UITableView,将当前的ViewController指定为委托和数据源,并将视图(日历和列表视图)动画化以扩展/缩小以分割屏幕。

我不想使用StackView,因为这是IOS-9和更高版本。

有更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-16 18:45:47

我怀疑你是想做这种事。希望它有帮助:

Swift 2:

代码语言:javascript
复制
let view2 = UIView()

var screenWidth = CGFloat()
var screenHeight = CGFloat()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let screenSize: CGRect = UIScreen.mainScreen().bounds
    screenWidth = screenSize.width
    screenHeight = screenSize.height

    let view1 = UIView()
    view1.frame = CGRectMake(0, 0, screenWidth, screenWidth)
    view1.backgroundColor = UIColor.blueColor().colorWithAlphaComponent(0.5)
    self.view.addSubview(view1)

    let lbl1 = UILabel()
    lbl1.frame = CGRectMake(0, 0, screenWidth, 50)
    lbl1.text = "This is view 1"
    lbl1.textAlignment = NSTextAlignment.Center
    lbl1.center = view1.center
    view1.addSubview(lbl1)

    let btn = UIButton()
    btn.frame = CGRectMake(0,0,200,100)
    btn.center = CGPoint(x: view1.center.x, y: view1.center.y+60)
    btn.setTitle("Show view 2", forState: .Normal)
    btn.addTarget(self, action: "showView2:", forControlEvents: .TouchUpInside)
    view1.addSubview(btn)


    view2.frame = CGRectMake(0, screenHeight, screenWidth, screenHeight-screenWidth)
    view2.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5)
    self.view.addSubview(view2)

    let lbl2 = UILabel()
    lbl2.frame = CGRectMake(0, (screenHeight-screenWidth)/2-25, screenWidth, 50)
    lbl2.text = "This is view 2"
    lbl2.textAlignment = NSTextAlignment.Center
    view2.addSubview(lbl2)

}

var c = 0

func showView2(sender : UIButton) {

    UIView.animateWithDuration(1.0, delay: 0.0, options: .CurveEaseOut, animations: {

        if (self.c%2 == 0) {
            self.view2.frame = CGRectMake(0, self.screenWidth, self.screenWidth, self.screenHeight-self.screenWidth)
            sender.setTitle("Hide view 2", forState: .Normal)
        }
        else {
            self.view2.frame = CGRectMake(0, self.screenHeight, self.screenWidth, self.screenHeight-self.screenWidth)
            sender.setTitle("Show view 2", forState: .Normal)
        }

        }, completion: { finished in

    })

    c++

}

Swift 3:

代码语言:javascript
复制
let view2 = UIView()

var screenWidth = CGFloat()
var screenHeight = CGFloat()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let screenSize: CGRect = UIScreen.main.bounds
    screenWidth = screenSize.width
    screenHeight = screenSize.height

    let view1 = UIView()
    view1.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenWidth)
    view1.backgroundColor = UIColor.blue.withAlphaComponent(0.5)
    self.view.addSubview(view1)

    let lbl1 = UILabel()
    lbl1.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 50)
    lbl1.text = "This is view 1"
    lbl1.textAlignment = NSTextAlignment.center
    lbl1.center = view1.center
    view1.addSubview(lbl1)

    let btn = UIButton()
    btn.frame = CGRect(x: 0, y: 0, width: 200, height: 100)
    btn.center = CGPoint(x: view1.center.x, y: view1.center.y+60)
    btn.setTitle("Show view 2", for: .normal)
    btn.addTarget(self, action: #selector(showView2(_:)), for: .touchUpInside)
    view1.addSubview(btn)


    view2.frame = CGRect(x: 0, y: screenHeight, width: screenWidth, height: screenHeight-screenWidth)
    view2.backgroundColor = UIColor.red.withAlphaComponent(0.5)
    self.view.addSubview(view2)

    let lbl2 = UILabel()
    lbl2.frame = CGRect(x: 0, y: (screenHeight-screenWidth)/2-25, width: screenWidth, height: 50)
    lbl2.text = "This is view 2"
    lbl2.textAlignment = NSTextAlignment.center
    view2.addSubview(lbl2)

}

var c = 0

func showView2(_ sender : UIButton) {

    UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseOut, animations: {

        if (self.c%2 == 0) {
            self.view2.frame = CGRect(x: 0, y: self.screenWidth, width: self.screenWidth, height: self.screenHeight-self.screenWidth)
            sender.setTitle("Hide view 2", for: .normal)
        }
        else {
            self.view2.frame = CGRect(x: 0, y: self.screenHeight, width: self.screenWidth, height: self.screenHeight-self.screenWidth)
            sender.setTitle("Show view 2", for: .normal)
        }

    }, completion: { finished in

    })

    c += 1

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38980424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档