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()+"-";
 | ||
|         }
 | ||
|     }
 | ||
| }
 |