侧边栏
This commit is contained in:
parent
e7039061a8
commit
0cdb8515ca
@ -152,6 +152,10 @@ function SideBarBaseCellComp:setAnchoredPositionY(y)
|
|||||||
self.baseObject:setAnchoredPositionY(y)
|
self.baseObject:setAnchoredPositionY(y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function SideBarBaseCellComp:setAnchoredPositionX(x)
|
||||||
|
self.baseObject:setAnchoredPositionX(x)
|
||||||
|
end
|
||||||
|
|
||||||
function SideBarBaseCellComp:setVisible(visible)
|
function SideBarBaseCellComp:setVisible(visible)
|
||||||
self.visible = visible
|
self.visible = visible
|
||||||
self.baseObject:setVisible(visible)
|
self.baseObject:setVisible(visible)
|
||||||
|
|||||||
@ -390,7 +390,14 @@ end
|
|||||||
function MainCityUI:initLeftRightBtns()
|
function MainCityUI:initLeftRightBtns()
|
||||||
self.leftNode = self.uiMap["main_ui.left_node"]
|
self.leftNode = self.uiMap["main_ui.left_node"]
|
||||||
self.leftSideBar = self.uiMap["main_ui.left_node.side_bar"]
|
self.leftSideBar = self.uiMap["main_ui.left_node.side_bar"]
|
||||||
|
self.leftSideBar:setAnchorMin(0, 1)
|
||||||
|
self.leftSideBar:setAnchorMax(0, 1)
|
||||||
|
self.leftSideBar:getTransform().pivot = BF.Vector2(0, 1)
|
||||||
|
local addY = SafeAreaManager:getNotchScreenHeight()
|
||||||
|
self.leftSideBar:setAnchoredPosition(17, -280 - addY)
|
||||||
self.leftArrowBtn = self.uiMap["main_ui.left_node.arrow_node"]
|
self.leftArrowBtn = self.uiMap["main_ui.left_node.arrow_node"]
|
||||||
|
self.leftArrowBtn:setAnchorMin(0, 1)
|
||||||
|
self.leftArrowBtn:setAnchorMax(0, 1)
|
||||||
self.leftArrowBtn:addClickListener(function()
|
self.leftArrowBtn:addClickListener(function()
|
||||||
self:openOrCloseLeftSideBar()
|
self:openOrCloseLeftSideBar()
|
||||||
end)
|
end)
|
||||||
@ -398,7 +405,13 @@ function MainCityUI:initLeftRightBtns()
|
|||||||
|
|
||||||
self.rightNode = self.uiMap["main_ui.right_node"]
|
self.rightNode = self.uiMap["main_ui.right_node"]
|
||||||
self.rightSideBar = self.uiMap["main_ui.right_node.side_bar"]
|
self.rightSideBar = self.uiMap["main_ui.right_node.side_bar"]
|
||||||
|
self.rightSideBar:setAnchorMin(1, 1)
|
||||||
|
self.rightSideBar:setAnchorMax(1, 1)
|
||||||
|
self.rightSideBar:getTransform().pivot = BF.Vector2(1, 1)
|
||||||
|
self.rightSideBar:setAnchoredPosition(-17, -280 - addY)
|
||||||
self.rightArrowBtn = self.uiMap["main_ui.right_node.arrow_node"]
|
self.rightArrowBtn = self.uiMap["main_ui.right_node.arrow_node"]
|
||||||
|
self.rightArrowBtn:setAnchorMin(1, 1)
|
||||||
|
self.rightArrowBtn:setAnchorMax(1, 1)
|
||||||
self.rightArrowBtn:addClickListener(function()
|
self.rightArrowBtn:addClickListener(function()
|
||||||
self:openOrCloseRightSideBar()
|
self:openOrCloseRightSideBar()
|
||||||
end)
|
end)
|
||||||
@ -407,6 +420,7 @@ function MainCityUI:initLeftRightBtns()
|
|||||||
self.sideBarCellObject = self.uiMap["main_ui.cache_node.side_bar_cell"]
|
self.sideBarCellObject = self.uiMap["main_ui.cache_node.side_bar_cell"]
|
||||||
local w, h = self.sideBarCellObject:fastGetSizeDelta()
|
local w, h = self.sideBarCellObject:fastGetSizeDelta()
|
||||||
self.sideBarHeight = h
|
self.sideBarHeight = h
|
||||||
|
self.sideBarMaxCount = 4
|
||||||
if self.leftBarList == nil then
|
if self.leftBarList == nil then
|
||||||
self.leftBarList = {}
|
self.leftBarList = {}
|
||||||
end
|
end
|
||||||
@ -478,6 +492,8 @@ function MainCityUI:refreshLeftBtns()
|
|||||||
if cell == nil then
|
if cell == nil then
|
||||||
cell = self:addSideBarCellComp(v)
|
cell = self:addSideBarCellComp(v)
|
||||||
cell:getBaseObject():setParent(self.leftSideBar, false)
|
cell:getBaseObject():setParent(self.leftSideBar, false)
|
||||||
|
cell:getBaseObject():setAnchorMin(0, 1)
|
||||||
|
cell:getBaseObject():setAnchorMax(0, 1)
|
||||||
end
|
end
|
||||||
cell:initWithParentUI(self, v, true)
|
cell:initWithParentUI(self, v, true)
|
||||||
table.insert(self.leftBarList, cell)
|
table.insert(self.leftBarList, cell)
|
||||||
@ -490,16 +506,25 @@ function MainCityUI:refreshLeftBtns()
|
|||||||
end
|
end
|
||||||
self.leftNode:setAnchoredPositionX(0)
|
self.leftNode:setAnchoredPositionX(0)
|
||||||
local y = -SIDE_BAR_BORDER_OFFSET - self.sideBarHeight/2
|
local y = -SIDE_BAR_BORDER_OFFSET - self.sideBarHeight/2
|
||||||
|
local x = 60
|
||||||
|
local maxCount = self.sideBarMaxCount
|
||||||
|
local minY = y
|
||||||
|
local bgSizeX = 112
|
||||||
|
local otherColumn = false
|
||||||
if isClose then -- 只显示3个
|
if isClose then -- 只显示3个
|
||||||
local minCount = GConst.MainCityConst.SIDE_BAR_MIN_COUNT
|
local minCount = GConst.MainCityConst.SIDE_BAR_MIN_COUNT
|
||||||
for i = 1, minCount do
|
for i = 1, minCount do
|
||||||
local sideBarBtn = self.leftBarList[i]
|
local sideBarBtn = self.leftBarList[i]
|
||||||
if i <= sideBarShowCount then
|
if i <= sideBarShowCount then
|
||||||
|
sideBarBtn:setAnchoredPositionX(x)
|
||||||
sideBarBtn:setAnchoredPositionY(y)
|
sideBarBtn:setAnchoredPositionY(y)
|
||||||
sideBarBtn:refresh()
|
sideBarBtn:refresh()
|
||||||
sideBarBtn:setActive(true)
|
sideBarBtn:setActive(true)
|
||||||
sideBarBtn:setVisible(true)
|
sideBarBtn:setVisible(true)
|
||||||
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
||||||
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i = minCount + 1, sideBarShowCount do
|
for i = minCount + 1, sideBarShowCount do
|
||||||
@ -509,25 +534,49 @@ function MainCityUI:refreshLeftBtns()
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
for k, v in ipairs(self.leftBarList) do
|
for k, v in ipairs(self.leftBarList) do
|
||||||
|
maxCount = maxCount - 1
|
||||||
|
v:setAnchoredPositionX(x)
|
||||||
v:setAnchoredPositionY(y)
|
v:setAnchoredPositionY(y)
|
||||||
v:refresh()
|
v:refresh()
|
||||||
v:setActive(true)
|
v:setActive(true)
|
||||||
v:setVisible(true)
|
v:setVisible(true)
|
||||||
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
||||||
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
|
if maxCount == 0 then -- 换行
|
||||||
|
y = -SIDE_BAR_BORDER_OFFSET - self.sideBarHeight/2
|
||||||
|
x = x + 110
|
||||||
|
bgSizeX = 228
|
||||||
|
otherColumn = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if sideBarShowCount <= GConst.MainCityConst.SIDE_BAR_MIN_COUNT then -- 小于3个不显示箭头
|
if sideBarShowCount <= GConst.MainCityConst.SIDE_BAR_MIN_COUNT then -- 小于3个不显示箭头
|
||||||
y = y + self.sideBarHeight / 2
|
y = y + self.sideBarHeight / 2
|
||||||
self.leftSideBar:setSizeDeltaY(-y)
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
|
self.leftSideBar:setSizeDeltaX(bgSizeX)
|
||||||
|
self.leftSideBar:setSizeDeltaY(-minY)
|
||||||
self.leftArrowBtn:stopClickAnimation()
|
self.leftArrowBtn:stopClickAnimation()
|
||||||
self.leftArrowBtn:setVisible(false)
|
self.leftArrowBtn:setVisible(false)
|
||||||
else
|
else
|
||||||
local arrowHeight = self.leftArrowBtn:getRectHeight()
|
local arrowHeight = self.leftArrowBtn:getRectHeight()
|
||||||
y = y + self.sideBarHeight/2 - SIDE_BAR_ARROW_INTERVAL - arrowHeight
|
y = y + self.sideBarHeight/2 - SIDE_BAR_ARROW_INTERVAL - arrowHeight
|
||||||
self.leftSideBar:setSizeDeltaY(-y)
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
|
self.leftSideBar:setSizeDeltaX(bgSizeX)
|
||||||
|
self.leftSideBar:setSizeDeltaY(-minY)
|
||||||
self.leftArrowImg:setLocalScale(1, isClose and -1 or 1, 1)
|
self.leftArrowImg:setLocalScale(1, isClose and -1 or 1, 1)
|
||||||
self.leftArrowBtn:setVisible(true)
|
self.leftArrowBtn:setVisible(true)
|
||||||
self.leftArrowBtn:setAnchoredPositionY(self.leftSideBar:fastGetAnchoredPositionY() + y + arrowHeight/2 + SIDE_BAR_BORDER_OFFSET)
|
self.leftArrowBtn:setAnchoredPositionY(self.leftSideBar:fastGetAnchoredPositionY() + minY + arrowHeight/2 + SIDE_BAR_BORDER_OFFSET)
|
||||||
|
if otherColumn then
|
||||||
|
self.leftArrowBtn:setAnchoredPositionX(133)
|
||||||
|
else
|
||||||
|
self.leftArrowBtn:setAnchoredPositionX(73)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -558,6 +607,8 @@ function MainCityUI:refreshRightBtns()
|
|||||||
if cell == nil then
|
if cell == nil then
|
||||||
cell = self:addSideBarCellComp(v)
|
cell = self:addSideBarCellComp(v)
|
||||||
cell:getBaseObject():setParent(self.rightSideBar, false)
|
cell:getBaseObject():setParent(self.rightSideBar, false)
|
||||||
|
cell:getBaseObject():setAnchorMin(1, 1)
|
||||||
|
cell:getBaseObject():setAnchorMax(1, 1)
|
||||||
end
|
end
|
||||||
cell:initWithParentUI(self, v, false)
|
cell:initWithParentUI(self, v, false)
|
||||||
table.insert(self.rightBarList, cell)
|
table.insert(self.rightBarList, cell)
|
||||||
@ -570,16 +621,25 @@ function MainCityUI:refreshRightBtns()
|
|||||||
end
|
end
|
||||||
self.rightNode:setAnchoredPositionX(0)
|
self.rightNode:setAnchoredPositionX(0)
|
||||||
local y = -SIDE_BAR_BORDER_OFFSET - self.sideBarHeight/2
|
local y = -SIDE_BAR_BORDER_OFFSET - self.sideBarHeight/2
|
||||||
|
local x = -60
|
||||||
|
local maxCount = self.sideBarMaxCount
|
||||||
|
local minY = y
|
||||||
|
local bgSizeX = 112
|
||||||
|
local otherColumn = false
|
||||||
if isClose then -- 只显示一个
|
if isClose then -- 只显示一个
|
||||||
local minCount = GConst.MainCityConst.SIDE_BAR_MIN_COUNT
|
local minCount = GConst.MainCityConst.SIDE_BAR_MIN_COUNT
|
||||||
for i = 1, minCount do
|
for i = 1, minCount do
|
||||||
local sideBarBtn = self.rightBarList[i]
|
local sideBarBtn = self.rightBarList[i]
|
||||||
if i <= sideBarShowCount then
|
if i <= sideBarShowCount then
|
||||||
|
sideBarBtn:setAnchoredPositionX(x)
|
||||||
sideBarBtn:setAnchoredPositionY(y)
|
sideBarBtn:setAnchoredPositionY(y)
|
||||||
sideBarBtn:refresh()
|
sideBarBtn:refresh()
|
||||||
sideBarBtn:setActive(true)
|
sideBarBtn:setActive(true)
|
||||||
sideBarBtn:setVisible(true)
|
sideBarBtn:setVisible(true)
|
||||||
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
||||||
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i = minCount + 1, sideBarShowCount do
|
for i = minCount + 1, sideBarShowCount do
|
||||||
@ -589,25 +649,50 @@ function MainCityUI:refreshRightBtns()
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
for k, v in ipairs(self.rightBarList) do
|
for k, v in ipairs(self.rightBarList) do
|
||||||
|
maxCount = maxCount - 1
|
||||||
|
v:setAnchoredPositionX(x)
|
||||||
v:setAnchoredPositionY(y)
|
v:setAnchoredPositionY(y)
|
||||||
v:refresh()
|
v:refresh()
|
||||||
v:setActive(true)
|
v:setActive(true)
|
||||||
v:setVisible(true)
|
v:setVisible(true)
|
||||||
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
y = y - self.sideBarHeight - SIDE_BAR_INTERVAL
|
||||||
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
|
if maxCount == 0 then -- 换行
|
||||||
|
y = -SIDE_BAR_BORDER_OFFSET - self.sideBarHeight/2
|
||||||
|
x = x - 110
|
||||||
|
bgSizeX = 228
|
||||||
|
otherColumn = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if sideBarShowCount <= GConst.MainCityConst.SIDE_BAR_MIN_COUNT then
|
if sideBarShowCount <= GConst.MainCityConst.SIDE_BAR_MIN_COUNT then
|
||||||
y = y + self.sideBarHeight / 2
|
y = y + self.sideBarHeight / 2
|
||||||
self.rightSideBar:setSizeDeltaY(-y)
|
y = y + self.sideBarHeight / 2
|
||||||
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
|
self.rightSideBar:setSizeDeltaX(bgSizeX)
|
||||||
|
self.rightSideBar:setSizeDeltaY(-minY)
|
||||||
self.rightArrowBtn:stopClickAnimation()
|
self.rightArrowBtn:stopClickAnimation()
|
||||||
self.rightArrowBtn:setVisible(false)
|
self.rightArrowBtn:setVisible(false)
|
||||||
else
|
else
|
||||||
local arrowHeight = self.rightArrowBtn:getRectHeight()
|
local arrowHeight = self.rightArrowBtn:getRectHeight()
|
||||||
y = y + self.sideBarHeight / 2 - SIDE_BAR_ARROW_INTERVAL - arrowHeight
|
y = y + self.sideBarHeight / 2 - SIDE_BAR_ARROW_INTERVAL - arrowHeight
|
||||||
self.rightSideBar:setSizeDeltaY(-y)
|
if minY > y then
|
||||||
|
minY = y
|
||||||
|
end
|
||||||
|
self.rightSideBar:setSizeDeltaX(bgSizeX)
|
||||||
|
self.rightSideBar:setSizeDeltaY(-minY)
|
||||||
self.rightArrowImg:setLocalScale(1, isClose and -1 or 1, 1)
|
self.rightArrowImg:setLocalScale(1, isClose and -1 or 1, 1)
|
||||||
self.rightArrowBtn:setVisible(true)
|
self.rightArrowBtn:setVisible(true)
|
||||||
self.rightArrowBtn:setAnchoredPositionY(self.rightSideBar:fastGetAnchoredPositionY() + y + arrowHeight/2 + SIDE_BAR_BORDER_OFFSET)
|
self.rightArrowBtn:setAnchoredPositionY(self.rightSideBar:fastGetAnchoredPositionY() + y + arrowHeight/2 + SIDE_BAR_BORDER_OFFSET)
|
||||||
|
if otherColumn then
|
||||||
|
self.rightArrowBtn:setAnchoredPositionX(-133)
|
||||||
|
else
|
||||||
|
self.rightArrowBtn:setAnchoredPositionX(-73)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user