void LateUpdate()
    {
        if (InputFieldActive)// && TouchScreenKeyboard.visible)
        {
            rectTransform.anchoredPosition = Vector2.zero;

            Rect rect = RectTransformExtension.GetScreenRect(childRectTransform, canvas);

            float heightPercentOfKeyboard = GetKeyboardHeightRatio() * 100f;
            float heightPercentOfInput    = (Screen.height - (rect.y + rect.height)) / Screen.height * 100f;


            if (heightPercentOfKeyboard > heightPercentOfInput)
            {
                // keyboard covers input field so move screen up to show keyboard
                float differenceHeightPercent = heightPercentOfKeyboard - heightPercentOfInput;
                float newYPos = rectTransform.rect.height / 100f * differenceHeightPercent;

                Vector2 newAnchorPosition = Vector2.zero;
                newAnchorPosition.y            = newYPos;
                rectTransform.anchoredPosition = newAnchorPosition;
            }
            else
            {
                // Keyboard top is below the position of the input field, so leave screen anchored at zero
                rectTransform.anchoredPosition = Vector2.zero;
            }
        }
        else
        {
            // No focus or touchscreen invisible, set screen anchor to zero
            rectTransform.anchoredPosition = Vector2.zero;
        }
        InputFieldActive = false;
    }
Пример #2
0
 void Update()
 {
     if (next)
     {
         line.enabled = true;
         line.Points  = new Vector2[] {
             new Vector2(0f, 0f),
             new Vector2(30f, 0),
             RectTransformExtension.switchToRectTransform(next.anchor.GetComponent <RectTransform>(), line.GetComponent <RectTransform>()) - new Vector2(30f, 0),
             RectTransformExtension.switchToRectTransform(next.anchor.GetComponent <RectTransform>(), line.GetComponent <RectTransform>())
         };
     }
     else
     {
         line.enabled = false;
     }
 }
    void LateUpdate()
    {
        if ((InputFieldActive) && ((TouchScreenKeyboard.visible)))
        {
            transform.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;

            Rect  rect                    = RectTransformExtension.GetScreenRect(childRectTransform, canvas);
            float keyboardHeight          = (float)GetKeyboardHeight();
            float heightPercentOfKeyboard = keyboardHeight / Screen.height * 100f;
            float heightPercentOfInput    = (Screen.height - (rect.y + rect.height)) / Screen.height * 100f;


            if (heightPercentOfKeyboard > heightPercentOfInput)
            {
                // keyboard covers input field so move screen up to show keyboard
                float differenceHeightPercent = heightPercentOfKeyboard - heightPercentOfInput;
                float newYPos = transform.GetComponent <RectTransform>().rect.height / 100f * differenceHeightPercent;

                Vector2 newAnchorPosition = Vector2.zero;
                                #if UNITY_ANDROID
                newAnchorPosition.y = newYPos + 40;
                                #elif UNITY_IOS
                newAnchorPosition.y = newYPos;
                                #endif

                transform.GetComponent <RectTransform>().anchoredPosition = newAnchorPosition;
            }
            else
            {
                // Keyboard top is below the position of the input field, so leave screen anchored at zero
                transform.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;
            }
        }
        else
        {
            // No focus or touchscreen invisible, set screen anchor to zero
            transform.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;
        }
        //InputFieldActive = false;
    }
Пример #4
0
    //获取cell 的位置偏移, 目的是使其对位是content 的左上角
    private Vector2 GetCellOffsetValue(RectTransform pCell)
    {
#if UNITY_EDITOR
        if (pCell.IsStandAnchorType() == false)
        {
            Debug.LogError("cell 的锚点必须是标准的形式, 就是TopLeft, TopCenter ... ... 这种");
        }
#endif
        RectTransformAnchorType tAnchorType = pCell.GetAnchorType();
        Vector2 tAnchorValue   = RectTransformExtension.GetAnchorTypeValue(tAnchorType).Key;
        Vector2 tTLAnchorValue = RectTransformExtension.GetAnchorTypeValue(RectTransformAnchorType.TopLeft).Key;
        Vector2 tAnchorOffset  = tTLAnchorValue - tAnchorValue;

        Vector2 tAnchorOffsetPos = new Vector2(mRectTransform.rect.width * tAnchorOffset.x, mRectTransform.rect.height * tAnchorOffset.y);

        Vector2 tTLPivotValue = new Vector2(0, 1);
        Vector2 tPivotOffset  = pCell.pivot - tTLPivotValue;

        Vector2 tPivotOffsetPos = new Vector2(tPivotOffset.x * pCell.rect.width, tPivotOffset.y * pCell.rect.height);

        Vector2 tTotalOffsetPos = new Vector2(tAnchorOffsetPos.x + tPivotOffsetPos.x, tAnchorOffsetPos.y + tPivotOffsetPos.y);

        return(tTotalOffsetPos);
    }