Пример #1
0
 public void TabViewControlShowOrClose(bool nuclearBombSwitch, IMCTabViewToggle tvt) // 内部调用
 {
     if (nuclearBombSwitch)                                                          //need judge otherwise collapse
     {
         if (toggles.Count > 0 && toggles.Count == contents.Count)
         {
             for (int i = 0; i < toggles.Count; i++)
             {
                 if (toggles[i] == tvt)
                 {
                     tvt.toggle.isOn = true;
                     contents[i].gameObject.SetActive(true);
                     currentIndex = i;
                 }
                 if (toggles[i] != tvt)
                 {
                     toggles[i].toggle.isOn = false;
                     contents[i].gameObject.SetActive(false);
                 }
             }
         }
     }
 }
Пример #2
0
        public static GameObject CreateTabView(Resources resources)
        {
            GameObject go = CreateUIElementRoot("IMC Tab View", s_ImageElementSize);

            go.AddComponent <CanvasGroup>();
            IMCTabView tabView = go.AddComponent <IMCTabView>();

            IMCImage image = go.AddComponent <IMCImage>();

            image.sprite = resources.background;
            image.type   = IMCImage.Type.Sliced;
            image.color  = s_PanelColor;

            RectTransform tabViewRT = go.GetComponent <RectTransform>();

            tabViewRT.sizeDelta = new Vector2(600, 250);
            tabViewRT.pivot     = new Vector2(0.5f, 1);

            GameObject    toggleContainer   = CreateUIElementRoot("ToggleContainer", s_ImageElementSize);
            RectTransform toggleContainerRT = toggleContainer.GetComponent <RectTransform>();

            toggleContainerRT.SetParent(tabViewRT);
            toggleContainerRT.anchorMin        = new Vector2(0.5f, 1);
            toggleContainerRT.anchorMax        = new Vector2(0.5f, 1);
            toggleContainerRT.pivot            = new Vector2(0.5f, 0);
            toggleContainerRT.anchoredPosition = Vector2.zero;
            toggleContainerRT.sizeDelta        = new Vector2(600, 50);
            ContentSizeFitter contentSizeFitter = toggleContainer.AddComponent <ContentSizeFitter>();

            contentSizeFitter.horizontalFit = IMCUI.UI.ContentSizeFitter.FitMode.PreferredSize;
            toggleContainer.AddComponent <IMCHorizontalLayoutGroup>();
            ToggleGroup toggleGroup = toggleContainer.AddComponent <ToggleGroup>();

            for (int i = 0; i <= 2; i++)
            {
                GameObject toggle = CreateToggle(resources);
                toggle.transform.FindChild("Label").GetComponent <IMCText>().raycast = false;//if don't shut down IMCText is raycast attribute  ,occur BUG.

                IMCTabViewToggle tabViewToggle = toggle.AddComponent <IMCTabViewToggle>();
                tabViewToggle.tabView = tabViewRT.GetComponent <IMCTabView>();

                tabViewRT.GetComponent <IMCTabView>().toggles.Add(tabViewToggle);
                // in editor script , add event invalidity.
                //tabViewToggle.toggle.onValueChanged.AddListener(tabViewToggle.parent.TabViewControlShowOrClose);

                IMCToggle toggleT = toggle.GetComponent <IMCToggle>();
                toggleT.name = toggleT.name + i.ToString();
                toggleT.transform.SetParent(toggleContainerRT);

                toggleT.group = toggleGroup;

                // because toggleContainer is  ToggleGroup component,ToggleGroup is Execution order impact Toggle,so annotation this code .
                //if (i == 0)
                //    toggleT.isOn = true;
                //else
                //    toggleT.isOn = false;

                RectTransform backGround = toggle.transform.GetChild(0).GetComponent <RectTransform>();
                backGround.anchorMin        = Vector2.zero;
                backGround.anchorMax        = Vector2.one;
                backGround.pivot            = Vector2.zero;
                backGround.anchoredPosition = Vector2.zero;
                backGround.sizeDelta        = Vector2.zero;

                RectTransform checkmark = backGround.GetChild(0).GetComponent <RectTransform>();
                checkmark.anchorMin        = Vector2.zero;
                checkmark.anchorMax        = Vector2.one;
                checkmark.anchoredPosition = Vector2.zero;
                checkmark.sizeDelta        = Vector2.zero;

                RectTransform labelRT = toggle.transform.GetChild(1).GetComponent <RectTransform>();
                labelRT.anchoredPosition = Vector2.zero;
                labelRT.sizeDelta        = Vector2.zero;
                labelRT.GetComponent <IMCText>().alignment = TextAnchor.MiddleCenter;

                LayoutElement layoutElement = toggle.AddComponent <LayoutElement>();
                layoutElement.preferredWidth  = 200;
                layoutElement.preferredHeight = 20;
            }

            GameObject    contentContainer   = CreateUIElementRoot("ContentContainer", s_ImageElementSize);
            RectTransform contentContainerRT = contentContainer.GetComponent <RectTransform>();

            contentContainerRT.sizeDelta = tabViewRT.sizeDelta;
            contentContainerRT.SetParent(tabViewRT);
            contentContainerRT.anchoredPosition = Vector2.zero;
            for (int i = 0; i <= 2; i++)
            {
                GameObject toggleContent      = CreateUIElementRoot("TabContent" + i.ToString(), s_ImageElementSize);
                IMCImage   toggleContentImage = toggleContent.AddComponent <IMCImage>();
                toggleContentImage.sprite = resources.background;
                toggleContentImage.type   = IMCImage.Type.Sliced;
                toggleContentImage.color  = s_PanelColor;

                tabViewRT.GetComponent <IMCTabView>().contents.Add(toggleContentImage);

                RectTransform toggleContentRT = toggleContent.GetComponent <RectTransform>();
                toggleContentRT.sizeDelta = tabViewRT.sizeDelta;
                toggleContentRT.SetParent(contentContainerRT);
                toggleContentRT.anchoredPosition = Vector2.zero;
            }
            return(go);
        }