Skip to content

NScrollView

NScrollView组件用于在UI中展示一个可编辑的滚动视图。NScrollView接口如下表所示:

接口名称返回值接口含义
SetViewportActor(NActorPtr viewportAct)void设置视口节点
GetViewportActor()NActorPtr获取视口节点
SetContentActor(NActorPtr contentAct)void设置滚动内容节点
GetContentActor()NActorPtr获取滚动内容节点
SetHorizontalScrollbarActor(NActorPtr act)void设置水平滚动条节点
GetHorizontalScrollbarActor()NActorPtr获取水平滚动条节点
SetVerticalScrollbarActor(NActorPtr act)void设置垂直滚动条节点
GetVerticalScrollbarActor()NActorPtr获取垂直滚动条节点
SetHorizontalNormalizedPosition(float value)void设置水平滚动条位置
GetHorizontalNormalizedPosition()float获取水平滚动条位置
SetVerticalNormalizedPosition(float value)void设置垂直滚动条位置
GetVerticalNormalizedPosition()float获取垂直滚动条位置
SetScrollValueChanged(ScrollValueChanged changed)void设置滚动视图滚动位置发生变化时回调函数指针
SetHorizontal(bool isHorizontal)void设置是否可水平滚动视图内容
GetHorizontal()bool获取是否可水平滚动视图内容
SetVertical(bool isVertical)void设置是否可垂直滚动视图内容
GetVertical()bool获取是否可垂直滚动视图内容
SetMovementType(EMovementType value)void设置滚动视图边界模式
GetMovementTypeEMovementType获取滚动视图边界模式
SetHorizontalScrollbarVisibility(EScrollbarVisibility value)void设置水平滚动条可见性
GetHorizontalScrollbarVisibility()EScrollbarVisibility获取水平滚动条可见性
SetHorizontalScrollbarSpacing(float value)void设置水平滚动条与滚动内容间隙
GetHorizontalScrollbarSpacing()float获取水平滚动条与滚动内容间隙
SetVerticalScrollbarVisibility(EScrollbarVisibility value)void设置垂直滚动条可见性
GetVerticalScrollbarVisibility()EScrollbarVisibility获取垂直滚动条可见性
SetVerticalScrollbarSpacing(float value)void设置垂直滚动条与滚动内容间隙
GetVerticalScrollbarSpacingfloat获取垂直滚动条与滚动内容间隙

设置和获取滚动视图节点

void SetViewportActor(NActorPtr viewportAct); NActorPtr GetViewportActor(); void SetContentActor(NActorPtr contentAct); NActorPtr GetContentActor(); void SetHorizontalScrollbarActor(NActorPtr horizontalScrollbarActor); NActorPtr GetHorizontalScrollbarActor(); void SetVerticalScrollbarActor(NActorPtr verticalScrollbarActor); NActorPtr GetVerticalScrollbarActor();

参数:

参数说明
viewportAct视口节点,包含遮罩(mask)
contentAct滚动内容节点,显示内容需设为该节点子项
horizontalScrollbarActor水平滚动条节点
verticalScrollbarActor垂直滚动条节点

描述:设置和获取滚动视图组成节点。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollView>();
    auto contentAct = comp->GetContentActor();
    //创建滚动显示项.
    auto contentItemAct = NActorManager::CreateImageView("contentItem");
    auto imageView = contentItemAct->GetComponent<NImageView>();
    imageView->LoadFromFile("Assets/Textures/Skybox.png");
    imageView->SetSize(500, 300);
    //设置为contentAct的子项
    contentItemAct->SetParent(contentAct);
}

设置滚动视图显示位置

void SetHorizontalNormalizedPosition(float value); float GetHorizontalNormalizedPosition(); void SetVerticalNormalizedPosition(float value); float GetVerticalNormalizedPosition();

参数: value:水平/垂直滚动条位置

描述: 通过上述接口可以实现改变滚动条组控件的显示效果。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollView>();
    comp->SetVerticalNormalizedPosition(0.5f);
}

设置滚动视图位置改变回调

void SetScrollValueChanged(ScrollValueChanged changed);

参数: ScrollValueChanged:回调函数函数指针

描述: 通过上述接口可以设置滚动视图位置改变时回调函数。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollView>();
    ScrollValueChanged call = BIND_MEMBER_FUNCTION_TWO_PARAMS(&NTest::OnValueChanged, this);
    comp->SetScrollValueChanged(call);

}

void NTest::OnValueChanged(float scrollX, float scrollY)
{
    LogM(NS_LOG_ENGINE, "NScrollView value is Changed:%f, %f", scrollX, scrollY);
}

设置和获取滚动视图显示配置

void SetHorizontal(bool isHorizontal); bool GetHorizontal(); void SetVertical(bool isVertical); bool GetVertical(); void SetMovementType(EMovementType value); EMovementType GetMovementType(); void SetHorizontalScrollbarVisibility(EScrollbarVisibility value); EScrollbarVisibility GetHorizontalScrollbarVisibility(); void SetHorizontalScrollbarSpacing(float spacing); float GetHorizontalScrollbarSpacing(); void SetVerticalScrollbarVisibility(EScrollbarVisibility value); EScrollbarVisibility GetVerticalScrollbarVisibility(); void SetVerticalScrollbarSpacing(float spacing); float GetVerticalScrollbarSpacing();

参数:

参数说明
isHorizontal是否启用水平滚动
isVertical是否启用垂直滚动
EMovementTypeMT_Unrestricted、MT_Elastic 或 MT_Clamped。使用 MT_Elastic或 MT_Clamped可强制内容保持在滚动矩形的边界内。MT_Elastic 模式在内容到达滚动矩形边缘时弹回内容
EScrollbarVisibility滚动条是否应在不需要时自动隐藏以及(可选)是否还展开视口。SV_Permanent不隐藏永远显示,SV_AutoHide自动隐藏,SV_AutoHideAndExpandViewport自动隐藏并且展开视口。
spacing设置滚动视图与滚动条的间隙,仅当对应滚动条EScrollbarVisibility值为SV_AutoHideAndExpandViewport时生效。

描述: 通过上述接口可以设置滚动视图显示配置。

代码示例:

cpp
void NTest::Start()
{
    auto actor = GetNActor();
    auto comp = actor->GetComponent<NScrollView>();
    //设置不启用垂直滚动,滚动视图垂直滚动被禁止
    comp->SetVertical(false);
}