--[[
|
|
横向Bar
|
|
示例:
|
|
self.tabBar = UIHorTabBar.New(self.tabCon)
|
|
self.tabBar:SetData({"按钮1","按钮2"}, call_back)
|
|
self.tabBar:SetSize(180,60)
|
|
self.tabBar:SetSelectTab(1)
|
|
]]
|
|
UIHorTabBar = UIHorTabBar or BaseClass(BaseComponent)
|
|
|
|
function UIHorTabBar:__init(handle_wnd)
|
|
self:CreateGameObject(UIType.UIHorTabBar)
|
|
self.item_list = {}
|
|
end
|
|
|
|
--[[
|
|
data = {"标签1","标签2","标签3"}
|
|
]]
|
|
function UIHorTabBar:SetData( data, call_back )
|
|
self.data = data
|
|
self.call_back = call_back
|
|
local call_back = function ( index )
|
|
self:SetSelectTab(index)
|
|
if self.call_back then
|
|
self.call_back(index)
|
|
end
|
|
end
|
|
for i,v in ipairs(data) do
|
|
local item = self.item_list[i]
|
|
if not item then
|
|
item = UIHorTabBtn.New(self.ScrollViewCon, call_back)
|
|
self.item_list[i] = item
|
|
end
|
|
item:SetVisible(true)
|
|
item:SetText(i, v)
|
|
end
|
|
self:BoolCanClick(true)
|
|
|
|
for i=#data+1, #self.item_list do
|
|
self.item_list[i]:SetVisible(false)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:BoolCanClick(state)
|
|
self.can_click_state = state
|
|
for k,v in pairs(self.item_list) do
|
|
v:SetCanClick(self.can_click_state)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:ShowItemRedDot( index, bool )
|
|
if self.item_list[index] then
|
|
self.item_list[index]:ShowRedDot(bool)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:GetSize( )
|
|
local count = 0
|
|
for k,v in pairs(self.item_list) do
|
|
if v:GetVisible() then
|
|
count = count + 1
|
|
end
|
|
end
|
|
return count
|
|
end
|
|
|
|
function UIHorTabBar:GetTotalSize( )
|
|
local count = 0
|
|
for k,v in pairs(self.item_list) do
|
|
count = count + 1
|
|
end
|
|
return count
|
|
end
|
|
|
|
function UIHorTabBar:SetSelectTab( index )
|
|
self.cur_index = index
|
|
if self.item_list[self.last_index] then
|
|
self.item_list[self.last_index]:SetSelected(false)
|
|
end
|
|
if self.item_list[self.cur_index] then
|
|
self.item_list[self.cur_index]:SetSelected(true)
|
|
end
|
|
self.last_index = self.cur_index
|
|
end
|
|
|
|
function UIHorTabBar:SetItemVisible( index, bool )
|
|
if self.item_list[index] then
|
|
self.item_list[index]:SetVisible(bool)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:GetItemVisible( index )
|
|
if self.item_list[index] then
|
|
return self.item_list[index]:GetVisible()
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:SetSize( w, h )
|
|
self.grid_layout.cellSize = Vector2(w, h)
|
|
end
|
|
|
|
function UIHorTabBar:SetScrollConPos(x, y)
|
|
local max_width = GetSizeDeltaX(self.ScrollViewCon)
|
|
if max_width > 0 then
|
|
if x > 0 then
|
|
x = 0
|
|
else
|
|
x = math.max(x,-max_width)
|
|
end
|
|
self.ScrollViewCon.transform.localPosition = Vector2(x, y)
|
|
else
|
|
self.con_x = x
|
|
self.con_y = y
|
|
local function delay_method( )
|
|
self:SetScrollConPos(self.con_x,self.con_y)
|
|
end
|
|
self.delay_time = self.delay_time or setTimeout(delay_method, 0.01)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:LoadSuccess()
|
|
self.ScrollView = self:GetChild("ScrollView")
|
|
self.ScrollViewViewport = self:GetChild("ScrollView/Viewport")
|
|
self.ScrollViewCon = self:GetChild("ScrollView/Viewport/Content")
|
|
self.group = self.gameObject:GetComponent("ToggleGroup")
|
|
self.scroll_view_rect = self.ScrollView:GetComponent("ScrollRect")
|
|
self.scroll_view_rect.horizontal = true
|
|
self.scroll_view_rect.vertical = false
|
|
self.grid_layout = self.ScrollViewCon:GetComponent("GridLayoutGroup")
|
|
self.transform.anchoredPosition = Vector2.zero
|
|
self.transform.sizeDelta = Vector2(0, 116)
|
|
self:InitEvent()
|
|
end
|
|
|
|
function UIHorTabBar:SetHorizontal( bool )
|
|
self.scroll_view_rect.horizontal = bool
|
|
end
|
|
|
|
function UIHorTabBar:SetBtnRes( asset, res1, res2 )
|
|
for k,v in pairs(self.item_list) do
|
|
v:SetBtnRes(asset, res1, res2)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:SetBtnLabelColor(color1,color2)
|
|
for k,v in pairs(self.item_list) do
|
|
v:SetBtnLabelColor(color1,color2)
|
|
end
|
|
end
|
|
|
|
function UIHorTabBar:SetSpacing( w, h )
|
|
self.grid_layout.spacing = Vector2(w, h)
|
|
end
|
|
|
|
function UIHorTabBar:InitEvent()
|
|
|
|
end
|
|
|
|
function UIHorTabBar:GetItemByIndex(index)
|
|
local item = self.item_list[index]
|
|
if not item then
|
|
return
|
|
end
|
|
return item
|
|
end
|
|
|
|
function UIHorTabBar:__delete( )
|
|
for k,v in pairs(self.item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.item_list = {}
|
|
end
|