如何在旋转时修复native.newTextField的方向

我们的应用仅支持 竖屏,我们正在手动旋转一些对象,但我们遇到了 native.newTextField 的问题

-- setupTextField
function setupTextField()

    local txNameBG = display.newImageRect( "images/login/login-input-bg.png", 225, 30 )
    txNameBG.x = _gameCenter.x
    txNameBG.y = _gameCenter.y
    sceneGroup:insert(txNameBG)
    _events.fixRotate(txNameBG)

    if (txName == nil) then
        txName = native.newTextField( _gameCenter.x, _gameCenter.y, 225, 30 )
        txName.hasBackground = false
        txName.inputType = "default"
        txName.placeholder = "插入姓名"
        txName.align = "center"
        txName.font = native.newFont( native.systemFont, 15 )
        txName:setTextColor( 163, 25, 12 )
        txName:addEventListener( "userInput", _events.textListener )
        sceneGroup:insert(txName)
        -- _events.fixRotate(txName)

    end

end

这里是我们用于旋转对象的函数(仅 native.* 不响应)。

eventClass.fixRotate = function ( obj )

    obj:rotate(90)
    obj.isFixedRotation = true
    -- obj.angularVelocity = 0

end

这是正确的布局,但是 native.newTextField 内部的文本被裁剪了,

enter image description here

这是旋转(landscapeRight)后发生的情况

enter image description here

我该如何修复?

点赞
用户3041972
用户3041972

在你的 build.setting 文件中包含以下代码:

settings = {
    orientation =
    {
        default = "landscapeRight",
        content = "landscapeRight",
        supported = { "landscapeRight", "portrait" },
    },
}
2016-04-02 06:14:49
用户4903563
用户4903563

好的。我找到了解决方案:

设置 =
{
    ...

    方向 =
    {
        //我改变了
        //supported = { "portrait" }, to
       //
        supported = { "portrait", "landscapeRight", "landscapeLeft", "portraitUpsideDown"}
    }
    ...
}

此外,我发现被裁剪的文本只在Corona Simulator中出现,在实际设备上(我用的是iP6plus)它看起来非常好。所以我的个人建议是:一定要在真实设备上测试你的应用程序。

2016-04-04 03:48:01
用户1870706
用户1870706

我不知道native.newTextField()对手动旋转的适应性如何。我已在上面的评论中提出要提交一个错误报告。我敢肯定,当您在build.settings文件中声明要支持纵向和横向布局时,文本框会正确旋转。

我不确定为什么您想手动旋转所有对象而不是使用onOrientation事件重新布局页面。

Rob

2016-04-04 20:56:23