374 lines
10 KiB
Plaintext
374 lines
10 KiB
Plaintext
UIUtil = {}
|
|
|
|
--單行居中,多行靠左對其
|
|
function UIUtil.FitLabelLine(label)
|
|
if(label~=nil) then
|
|
local height = label.height
|
|
local size = label.fontSize
|
|
local line = math.floor(height/size)
|
|
if(line>1) then
|
|
label.pivot = UIWidget.Pivot.Left
|
|
else
|
|
label.pivot = UIWidget.Pivot.Center
|
|
end
|
|
end
|
|
end
|
|
|
|
function UIUtil.CenterLabelLine(label)
|
|
if(label~=nil) then
|
|
label.pivot = UIWidget.Pivot.Center
|
|
end
|
|
end
|
|
|
|
-- 單行自適應 多行高適應
|
|
function UIUtil.FitLabelHeight(label, width)
|
|
if(label~=nil) then
|
|
-- local outStr = "";
|
|
local labelText = label.text;
|
|
label.overflowMethod = 3; --UILabel.Overflow.ResizeHeight;
|
|
label.width = width;
|
|
label.text = "";
|
|
|
|
local bWarp, strOut, line;
|
|
if( string.find(labelText,"[\n]") )then
|
|
line = 2;
|
|
else
|
|
line = 1;
|
|
end
|
|
bWarp, strOut = label:Wrap (labelText, strOut, label.height * line);
|
|
|
|
if(bWarp and strOut~="")then
|
|
label.overflowMethod = 2; --UILabel.Overflow.ResizeFreely;
|
|
end
|
|
label.text = labelText;
|
|
end
|
|
end
|
|
|
|
function UIUtil.SceneCountDownMsg(id,params,removeWhenLoadScene)
|
|
MsgManager.ShowMsgByIDTable(id,params,id)
|
|
FloatingPanel.Instance:SetCountDownRemoveOnChangeScene(id,removeWhenLoadScene)
|
|
end
|
|
|
|
function UIUtil.StartSceenCountDown(text,data)
|
|
FloatingPanel.Instance:AddCountDown(text,data)
|
|
end
|
|
|
|
function UIUtil.EndSceenCountDown(id)
|
|
FloatingPanel.Instance:RemoveCountDown(id)
|
|
end
|
|
|
|
function UIUtil.FloatMiddleBottom(sortID,text)
|
|
FloatingPanel.Instance:FloatMiddleBottom(sortID,text)
|
|
end
|
|
|
|
function UIUtil.ClearFloatMiddleBottom()
|
|
FloatingPanel.Instance:ClearFloatMiddleBottom()
|
|
end
|
|
|
|
function UIUtil.FloatMsgByData(text)
|
|
FloatingPanel.Instance:TryFloatMessageByData(text)
|
|
end
|
|
|
|
function UIUtil.FloatShowyMsg(text)
|
|
FloatingPanel.Instance:FloatShowyMsg(text)
|
|
end
|
|
|
|
function UIUtil.FloatMsgByText(text)
|
|
FloatingPanel.Instance:TryFloatMessageByText(text)
|
|
end
|
|
|
|
function UIUtil.ShowEightTypeMsgByData(data,startPos,offset)
|
|
FloatingPanel.Instance:FloatTypeEightMsgByData(data,startPos,offset)
|
|
end
|
|
|
|
function UIUtil.StopEightTypeMsg()
|
|
FloatingPanel.Instance:StopFloatTypeEightMsg()
|
|
end
|
|
|
|
function UIUtil.PopUpConfirmView(titleText,contentText,confirmtext,canceltext,confirm,cancel,src,needCloseBtn,needExitDefaultHandle,unique)
|
|
if(needExitDefaultHandle==nil) then needExitDefaultHandle = true end
|
|
local viewData = {
|
|
viewname = "UniqueConfirmView",
|
|
title = titleText,
|
|
content = contentText,
|
|
confirmtext = confirmtext,
|
|
canceltext = canceltext,
|
|
confirmHandler = confirm,
|
|
cancelHandler = cancel,
|
|
source = src,
|
|
needCloseBtn = needCloseBtn,
|
|
needExitDefaultHandle = needExitDefaultHandle,
|
|
unique = unique,
|
|
}
|
|
GameFacade.Instance:sendNotification(UIEvent.ShowUI, viewData);
|
|
end
|
|
|
|
function UIUtil.PopUpDontAgainConfirmView(contentText,confirm,cancel,src,data)
|
|
if(needExitDefaultHandle==nil) then needExitDefaultHandle = true end
|
|
local viewData = {
|
|
viewname = "DontShowAgainConfirmView",
|
|
data = data,
|
|
content = contentText,
|
|
confirmHandler = confirm,
|
|
cancelHandler = cancel,
|
|
source = src,
|
|
}
|
|
GameFacade.Instance:sendNotification(UIEvent.ShowUI, viewData);
|
|
end
|
|
|
|
function UIUtil.PopUpConfirmYesNoView(title,content,confirmHandler,cancelHandler,source,confirmtext,canceltext,unique)
|
|
UIUtil.PopUpConfirmView(title,content,confirmtext,canceltext,confirmHandler,cancelHandler,source,false,false,unique)
|
|
end
|
|
|
|
function UIUtil.PopUpFuncView(title,content,confirmHandler,cancelHandler,source,confirmtext,canceltext)
|
|
UIUtil.PopUpConfirmView(title,content,confirmtext,canceltext,confirmHandler,cancelHandler,source,true,false)
|
|
end
|
|
|
|
function UIUtil.WarnPopup(titleText,contentText,confirm,cancel,src,confirmtext,canceltext)
|
|
local data = {
|
|
title = titleText,
|
|
content = contentText,
|
|
confirmtext = confirmtext,
|
|
canceltext = canceltext,
|
|
confirmHandler = confirm,
|
|
cancelHandler = cancel,
|
|
source = src,
|
|
}
|
|
if(UIWarning.Instance~=nil) then
|
|
UIWarning.Instance:AddWarnPopUp(data)
|
|
end
|
|
end
|
|
|
|
function UIUtil.ShowScreenMask(fadeInTime,fadeOutTime,fadeInCallBack,fadeOutCallBack,color)
|
|
color = color or ColorUtil.NGUIBlack
|
|
local viewData = {
|
|
viewname = "ScreenMaskView",
|
|
fadeInTime = fadeInTime,
|
|
fadeOutTime = fadeOutTime,
|
|
fadeInCallBack = fadeInCallBack,
|
|
fadeOutCallBack = fadeOutCallBack,
|
|
color = color,
|
|
}
|
|
GameFacade.Instance:sendNotification(UIEvent.ShowUI, viewData);
|
|
end
|
|
|
|
function UIUtil.RotateAround()
|
|
|
|
GameFacade.Instance:sendNotification(UIEvent.ShowUI, viewData);
|
|
end
|
|
|
|
function UIUtil.CenterScrollViewPos(scrollView, worldPos, springStr)
|
|
local mTrans = scrollView.transform;
|
|
local panel = scrollView.panel;
|
|
|
|
local cp = mTrans:InverseTransformPoint (worldPos);
|
|
|
|
local corners = panel.worldCorners;
|
|
local panelCenter = (corners[3] + corners[1]) * 0.5;
|
|
local cc = mTrans:InverseTransformPoint (panelCenter);
|
|
LuaGameObject.InverseTransformPointByVector3(mTrans, panelCenter);
|
|
|
|
-- local panelSize = panel:GetViewSize ();
|
|
-- local mBound = scrollView.bounds;
|
|
-- local tempV3 = LuaVector3(mBound.size.x - panelSize.x, mBound.size.y - panelSize.y);
|
|
-- local checkBound = Bounds(mBound.center, tempV3);
|
|
-- if (not checkBound:Contains (cp)) then
|
|
-- cp = checkBound:ClosestPoint (cp);
|
|
-- end
|
|
|
|
local localOffset = cp - cc;
|
|
if(springStr)then
|
|
SpringPanel.Begin(scrollView.gameObject, mTrans.localPosition - localOffset, springStr);
|
|
else
|
|
mTrans.localPosition = mTrans.localPosition - localOffset;
|
|
local co = panel.clipOffset;
|
|
panel.clipOffset = co + Vector2(localOffset.x, localOffset.y);
|
|
end
|
|
|
|
end
|
|
|
|
function UIUtil.GetUIParticle(effectID, depth, parent)
|
|
local containerResID = ResourcePathHelper.UICell("UIParticleHolder")
|
|
local container = Game.AssetManager_UI:CreateAsset(containerResID, parent);
|
|
local effectResID = ResourcePathHelper.EffectUI(effectID);
|
|
local effect = Game.AssetManager_UI:CreateAsset(effectResID, container);
|
|
local ctrl = container:GetComponent(ChangeRqByTex)
|
|
ctrl.transform.localPosition = LuaVector3.zero;
|
|
ctrl.depth = depth
|
|
ctrl:AddChild(effect)
|
|
return ctrl
|
|
end
|
|
|
|
function UIUtil.WrapLabel (uiLabel)
|
|
local strContent = uiLabel.text;
|
|
local bWarp, strOut;
|
|
bWarp, strOut = uiLabel:Wrap(strContent, strOut, uiLabel.height);
|
|
local length = StringUtil.getTextLen(strOut);
|
|
|
|
if(not bWarp)then
|
|
if (length > 2) then
|
|
local repStr = "";
|
|
local count = 0;
|
|
local rep_bWrap, rep_strOut = false, strOut;
|
|
repeat
|
|
count = count + 1;
|
|
repStr = StringUtil.getTextByIndex(rep_strOut, 1, length - count);
|
|
repStr = repStr .. "...";
|
|
|
|
rep_bWrap, rep_strOut = uiLabel:Wrap(repStr, rep_strOut, uiLabel.height);
|
|
until(rep_bWrap)
|
|
|
|
uiLabel.text = repStr;
|
|
end
|
|
end
|
|
end
|
|
|
|
function UIUtil.GetWrapLeftString (uiLabel, text)
|
|
uiLabel.text = text;
|
|
|
|
local bWarp, finalStr;
|
|
bWarp, finalStr = uiLabel:Wrap(text, finalStr, uiLabel.height);
|
|
if(not bWarp)then
|
|
local finallen = StringUtil.getTextLen(finalStr);
|
|
local textlen = StringUtil.getTextLen(text);
|
|
if(finallen < textlen)then
|
|
leftStr = StringUtil.getTextByIndex(text, finallen, textlen);
|
|
else
|
|
leftStr = "";
|
|
end
|
|
else
|
|
leftStr = nil;
|
|
end
|
|
return bWarp, leftStr;
|
|
end
|
|
|
|
function UIUtil.ChangeLayer(go, layer)
|
|
layer = layer or go.gameObject.layer;
|
|
go.gameObject.layer = layer;
|
|
local trans = go.gameObject.transform;
|
|
for i=0, trans.childCount-1 do
|
|
local transChild = trans:GetChild(i);
|
|
transChild.gameObject.layer = layer;
|
|
UIUtil.ChangeLayer(transChild.gameObject, layer);
|
|
end
|
|
end
|
|
|
|
function UIUtil.GetAllComponentInChildren(go, type)
|
|
local result = UIUtil.GetAllComponentsInChildren(go, type, true);
|
|
return result[1];
|
|
end
|
|
|
|
function UIUtil.GetAllComponentsInChildren(go, type, containSelf)
|
|
local comps = {};
|
|
local sp = go:GetComponent(type);
|
|
if(containSelf and sp)then
|
|
table.insert(comps, sp);
|
|
end
|
|
local childCount = go.transform.childCount;
|
|
for i=0,childCount-1 do
|
|
local trans = go.transform:GetChild(i);
|
|
local childComps = UIUtil.GetAllComponentsInChildren(trans.gameObject, type, true);
|
|
for i=1, #childComps do
|
|
table.insert(comps, childComps[i]);
|
|
end
|
|
end
|
|
return comps;
|
|
end
|
|
|
|
function UIUtil.GetComponentInParents(go, type)
|
|
if (go == nil) then
|
|
return nil;
|
|
end
|
|
local comp;
|
|
local t = go.transform.parent;
|
|
while (t ~= nil and comp == nil) do
|
|
comp = t.gameObject:GetComponent(type);
|
|
t = t.parent;
|
|
end
|
|
return comp;
|
|
end
|
|
|
|
function UIUtil.LimitInputCharacter(input, limitNum, validFunc)
|
|
local obj = input.gameObject;
|
|
if (not GameObjectUtil.Instance:ObjectIsNULL(obj)) then
|
|
local inputLimit = math.max(limitNum*5, 20);
|
|
input.characterLimit = inputLimit;
|
|
|
|
local func = function (go, state)
|
|
if(not state)then
|
|
local str = input.value;
|
|
if(type(validFunc) == "function")then
|
|
str = validFunc(str);
|
|
end
|
|
local length = StringUtil.ChLength(str);
|
|
if(length > limitNum)then
|
|
str = StringUtil.getTextByIndex(str, 1, limitNum);
|
|
end
|
|
input.value = str;
|
|
end
|
|
end
|
|
UIEventListener.Get(obj).onSelect = {"+=", func}
|
|
end
|
|
end
|
|
|
|
function UIUtil.PopupTipAchievement(achievement_conf_id)
|
|
UIViewAchievementPopupTip.Instance:ShowAchievementPopupTip(achievement_conf_id)
|
|
end
|
|
|
|
function UIUtil.isClickLeftScreenArea()
|
|
local tempVector3 = LuaVector3.zero;
|
|
local uiCamera = NGUIUtil:GetCameraByLayername("UI");
|
|
if not uiCamera then
|
|
return true
|
|
end
|
|
if(Input.touchCount > 1)then
|
|
for i=1,Input.touchCount do
|
|
local single = Input.GetTouch(i-1)
|
|
if(single.phase == TouchPhase.Ended)then
|
|
local x,y = LuaGameObject.GetTouchPosition(i-1,false)
|
|
tempVector3:Set(x,y,0)
|
|
break
|
|
end
|
|
end
|
|
else
|
|
local x,y,z = LuaGameObject.GetMousePosition()
|
|
tempVector3:Set(x,y,z)
|
|
end
|
|
local x,y,z = LuaGameObject.ScreenToWorldPointByVector3(uiCamera,tempVector3);
|
|
return x<=0
|
|
end
|
|
|
|
-- find child which name is @name
|
|
function UIUtil.FindGO(name, parent)
|
|
return parent ~= nil and GameObjectUtil.Instance:DeepFind(parent, name) or nil;
|
|
end
|
|
|
|
function UIUtil.FindComponent(name, comp, parent)
|
|
local go = UIUtil.FindGO(name, parent)
|
|
return go ~= nil and go:GetComponent(comp);
|
|
end
|
|
|
|
function UIUtil.FindAllComponents(parent, compType, containSelf)
|
|
if(parent == nil)then
|
|
return;
|
|
end
|
|
return GameObjectUtil.Instance:GetAllComponentsInChildren(parent, compType, containSelf) or {};
|
|
end
|
|
|
|
function UIUtil.AddClickEvent(obj,event)
|
|
if(event == nil)then
|
|
return;
|
|
end
|
|
UIEventListener.Get(obj).onClick = {"+=", event};
|
|
end
|
|
|
|
function UIUtil.RemoveClickEvent(obj,event)
|
|
if(event == nil)then
|
|
return;
|
|
end
|
|
UIEventListener.Get(obj).onClick = {"-=", event};
|
|
end
|
|
|
|
|
|
|