119 lines
4.6 KiB
C#
119 lines
4.6 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
|
||
namespace ZTools
|
||
{
|
||
public class ZCalendarModel : MonoBehaviour
|
||
{
|
||
[Header("根据当前时间自动初始化")]
|
||
public bool awake2Init = true;
|
||
[Header("自动补充前后月份的日期")]
|
||
public bool autoFillDate = true;
|
||
[Header("超过当前时间是否可以点击")]
|
||
public bool isUnexpiredTimeCanClick = true;
|
||
[Header("显示农历日期")]
|
||
public bool lunar = true;
|
||
[Header("如果为true,本对象显示状态不能关闭,可通过子集bak的显示状态控制默认状态")]
|
||
[Header("当前是否为弹窗日历")]
|
||
public bool isPopupCalendar = false;
|
||
[Header("当前是否为静态日历")]
|
||
public bool isStaticCalendar = false;
|
||
[Header("自动修改日期尺寸")]
|
||
public bool autoSetItemSize = true;
|
||
[Header("是否可以选择时间范围")]
|
||
public bool rangeCalendar = false;
|
||
[Header("--------------------------------------------------------------------")]
|
||
public GameObject bak;
|
||
public Button btnLastYear;
|
||
public Button btnNextYear;
|
||
public Button btnLastMonth;
|
||
public Button btnNextMonth;
|
||
public Text txtYear;
|
||
public Text txtMonth;
|
||
public Text year_txt;
|
||
public Text month_txt;
|
||
public Transform dayContent;
|
||
public ZCalendarDayItem dayItem;
|
||
[HideInInspector]
|
||
public Button btnClose;
|
||
[HideInInspector]
|
||
public ZCalendarController zCalendarController;
|
||
/// <summary>
|
||
/// 初始化
|
||
/// </summary>
|
||
public void Init()
|
||
{
|
||
if (!bak.activeInHierarchy)
|
||
{
|
||
bak.SetActive(true);
|
||
this.GetComponent<ZCalendar>().Hide();
|
||
}
|
||
if (autoSetItemSize)
|
||
{
|
||
SetItemSize();
|
||
}
|
||
if (isPopupCalendar)
|
||
{
|
||
AddCloseBtn();
|
||
}
|
||
if (isStaticCalendar)
|
||
{
|
||
btnLastYear.gameObject.SetActive(false);
|
||
btnNextYear.gameObject.SetActive(false);
|
||
btnLastMonth.gameObject.SetActive(false);
|
||
btnNextMonth.gameObject.SetActive(false);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 生成一个日期对象
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public ZCalendarDayItem Instantiate()
|
||
{
|
||
return Instantiate(dayItem, dayContent);
|
||
}
|
||
/// <summary>
|
||
/// 根据日历尺寸,设置宽高
|
||
/// </summary>
|
||
public void SetItemSize()
|
||
{
|
||
Vector2 bakSize = this.GetComponent<RectTransform>().sizeDelta;
|
||
Vector2 dayContentSize = dayContent.GetComponent<RectTransform>().sizeDelta;
|
||
//Debug.Log(bakSize.x +":::"+ dayContentSize.y);
|
||
GridLayoutGroup layoutGroup = dayContent.GetComponent<GridLayoutGroup>();
|
||
float itemSizeWidth = (bakSize.x - layoutGroup.spacing.x * layoutGroup.constraintCount - layoutGroup.padding.left - layoutGroup.padding.right) / layoutGroup.constraintCount;
|
||
float itemSizeHeight = (bakSize.y - Mathf.Abs(dayContentSize.y) - layoutGroup.padding.top - layoutGroup.padding.bottom - layoutGroup.spacing.y * 6) / 6;
|
||
dayContent.GetComponent<GridLayoutGroup>().cellSize = new Vector2(itemSizeWidth, itemSizeHeight);
|
||
}
|
||
/// <summary>
|
||
/// 添加空白处可关闭功能
|
||
/// </summary>
|
||
public void AddCloseBtn()
|
||
{
|
||
GameObject btnCloseObj = new GameObject();
|
||
RectTransform btnCloseRect = btnCloseObj.AddComponent<RectTransform>();
|
||
btnCloseObj.transform.SetParent(transform);
|
||
btnCloseObj.transform.SetAsFirstSibling();
|
||
btnCloseRect.sizeDelta = new Vector2(Screen.width, Screen.height);
|
||
btnCloseObj.transform.position = Vector3.zero + new Vector3(Screen.width / 2, Screen.height / 2, 0);
|
||
btnCloseObj.AddComponent<Image>().color = new Color(0,0,0,0);
|
||
this.btnClose = btnCloseObj.AddComponent<Button>();
|
||
}
|
||
/// <summary>
|
||
/// 设置年月文字
|
||
/// </summary>
|
||
/// <param name="year"></param>
|
||
/// <param name="month"></param>
|
||
public void SetTimeTxt(int year, int month)
|
||
{
|
||
txtYear.text = year + "年";
|
||
txtMonth.text = month + "月";
|
||
year_txt.text=year.ToString();
|
||
month_txt.text=month.ToString();
|
||
}
|
||
}
|
||
}
|