เคลื่อนไหวสองมุมมองในไทเทเนียม

ฉันมีสองมุมมองที่แสดงในหน้าต่างดังนี้

var topView = Ti.UI.createView({
  top: 0,
  height: '65%',
  orientation: 'vertical'
});
var botView = Ti.UI.createView({
  bottom: 0,
  height: '35%',
  layout: 'vertical'
});

ฉันต้องการเคลื่อนไหวดังนี้:

เมื่อคลิกปุ่ม topView จะเพิ่มขึ้นเป็นร้อยเปอร์เซ็นต์ ในขณะที่ botView จะลดลงเหลือ 0 เปอร์เซ็นต์ และการย้อนกลับจะเกิดขึ้นเมื่อมีการคลิกปุ่ม

แต่ฉันไม่พบวิธีที่จะทำสองมุมมอง ฉันหวังว่าจะมีคนช่วยได้ ขอบคุณ -:)

แก้ไข: นี่คือสิ่งที่ฉันได้ทำไปแล้ว:

var expandFlag = false;

/* create animations */
  var expandAnim_map = Ti.UI.createAnimation({
      height : '100%',
      duration: 300
  });
  var expandAnim_con = Ti.UI.createAnimation({
    height: '0%',
    duration : 300,
    bottom:0
  });

  var collapseAnim_map = Ti.UI.createAnimation({
      height: '65%',
      duration: 300,
  });
  var collapseAnim_con = Ti.UI.createAnimation({
      height: '35%',
      duration: 300,
      bottom:0
  });

  /* create animations */


if (expandFlag) {
  botView.animate(collapseAnim_con);
  topView.animate(collapseAnim_map);
  expandFlag = false;
} else {
  topView.animate(expandAnim_map);
  botView.animate(expandAnim_con);
  expandFlag = true;
}

นี่เป็นสิ่งที่ไม่สม่ำเสมอและไม่สวยงาม ดังนั้นฉันกำลังมองหาวิธีที่สะอาดและราบรื่นกว่านี้ ขอบคุณ.


person SamAko    schedule 07.10.2013    source แหล่งที่มา


คำตอบ (1)


ฉันขอแนะนำให้คุณสร้างภาพเคลื่อนไหวเพียงมุมมองเดียวเพื่อให้ได้ภาพเคลื่อนไหวที่ดูดี

คุณสามารถตั้งค่า zIndex ที่สูงขึ้นสำหรับมุมมองด้านบน จากนั้นขยายและลดเฉพาะมุมมองนั้น

var expandFlag = false;

var topView = Ti.UI.createView({
  top: 0,
  zIndex: 2,
  height: '65%',
  orientation: 'vertical'
});
var botView = Ti.UI.createView({
  bottom: 0,
  zIndex: 1,
  height: '35%',
  layout: 'vertical'
});

/* create animations */
  var expandAnim_map = Ti.UI.createAnimation({
      height : '100%',
      duration: 300
  });

  var collapseAnim_map = Ti.UI.createAnimation({
      height: '65%',
      duration: 300,
  });

  /* create animations */


if (expandFlag) {+
  topView.animate(collapseAnim_map);
  expandFlag = false;
} else {
  topView.animate(expandAnim_map);
  expandFlag = true;
}
person stomasso    schedule 07.10.2013
comment
ฉันสงสัยว่า + กำลังทำอะไรที่นี่ถ้า (expandFlag) {+ ดูเหมือนจะไม่ใช่ข้อผิดพลาดทางไวยากรณ์ แต่ดูเหมือนจะไม่สร้างความแตกต่างเลยใช่ไหม นอกจากนี้ การขยายก็ราบรื่น แต่การยุบมุมมองจะไม่เคลื่อนไหว - person SamAko; 08.10.2013
comment
ตัว + เป็นตัวพิมพ์ผิด มันไม่ได้ทำอะไรเลย เรื่องวิวถล่มไม่มีแอนิเมชั่น ไม่รู้จะเป็นยังไง... - person stomasso; 08.10.2013
comment
ฉันเดาว่าคุณใส่ส่วน if/else ไว้ใน eventlistener ใช่ไหม? - person stomasso; 08.10.2013
comment
แน่นอน ไม่เช่นนั้นคุณจะไม่สามารถควบคุมได้ว่าจะขยายและยุบ topView เมื่อใด อย่างไรก็ตาม ฉันไม่เข้าใจว่าทำไมการล่มสลายจึงไม่เคลื่อนไหว - person stomasso; 08.10.2013