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 | 设置滚动视图边界模式 |
| GetMovementType | EMovementType | 获取滚动视图边界模式 |
| SetHorizontalScrollbarVisibility(EScrollbarVisibility value) | void | 设置水平滚动条可见性 |
| GetHorizontalScrollbarVisibility() | EScrollbarVisibility | 获取水平滚动条可见性 |
| SetHorizontalScrollbarSpacing(float value) | void | 设置水平滚动条与滚动内容间隙 |
| GetHorizontalScrollbarSpacing() | float | 获取水平滚动条与滚动内容间隙 |
| SetVerticalScrollbarVisibility(EScrollbarVisibility value) | void | 设置垂直滚动条可见性 |
| GetVerticalScrollbarVisibility() | EScrollbarVisibility | 获取垂直滚动条可见性 |
| SetVerticalScrollbarSpacing(float value) | void | 设置垂直滚动条与滚动内容间隙 |
| GetVerticalScrollbarSpacing | float | 获取垂直滚动条与滚动内容间隙 |
设置和获取滚动视图节点
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 | 垂直滚动条节点 |
描述:设置和获取滚动视图组成节点。
代码示例:
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:水平/垂直滚动条位置
描述: 通过上述接口可以实现改变滚动条组控件的显示效果。
代码示例:
void NTest::Start()
{
auto actor = GetNActor();
auto comp = actor->GetComponent<NScrollView>();
comp->SetVerticalNormalizedPosition(0.5f);
}设置滚动视图位置改变回调
void SetScrollValueChanged(ScrollValueChanged changed);
参数: ScrollValueChanged:回调函数函数指针
描述: 通过上述接口可以设置滚动视图位置改变时回调函数。
代码示例:
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 | 是否启用垂直滚动 |
| EMovementType | MT_Unrestricted、MT_Elastic 或 MT_Clamped。使用 MT_Elastic或 MT_Clamped可强制内容保持在滚动矩形的边界内。MT_Elastic 模式在内容到达滚动矩形边缘时弹回内容 |
| EScrollbarVisibility | 滚动条是否应在不需要时自动隐藏以及(可选)是否还展开视口。SV_Permanent不隐藏永远显示,SV_AutoHide自动隐藏,SV_AutoHideAndExpandViewport自动隐藏并且展开视口。 |
| spacing | 设置滚动视图与滚动条的间隙,仅当对应滚动条EScrollbarVisibility值为SV_AutoHideAndExpandViewport时生效。 |
描述: 通过上述接口可以设置滚动视图显示配置。
代码示例:
void NTest::Start()
{
auto actor = GetNActor();
auto comp = actor->GetComponent<NScrollView>();
//设置不启用垂直滚动,滚动视图垂直滚动被禁止
comp->SetVertical(false);
}
