小编mik*_*e_t的帖子

Jetpack Compose - 在配置更改时保留 AndroidView 的状态

很可能是一个新手问题,因为我对 Android 开发相当陌生 - 我在配置更改/导航时在 @Composable 中保留 AndroidView 的状态时遇到麻烦,因为工厂块被调用(如预期)并且我的图表被重新实例化。

@Composable
fun ChartView(viewModel:ViewModel, modifier:Modifier){
    val context = LocalContext.current
    val chart = remember { DataChart(context) }

    AndroidView(
        modifier = modifier,
        factory = { context ->
            Log.d("DEBUGLOG", "chart init")
            chart
        },
        update = { chart ->
            Log.d("DEBUGLOG", "chart update")
        })
}
Run Code Online (Sandbox Code Playgroud)

DataChart是一个带有复杂图表的第三方组件,我想保留缩放/滚动状态。我知道我可以使用 ViewModel 来保留 conf 中的 UI 状态。更改,但考虑到保存缩放/滚动状态的复杂性,我想问是否有其他更简单的方法来实现这一点?

我尝试将整个图表实例移动到 viewModel,但由于它使用上下文,我收到有关上下文对象泄漏的警告。

任何帮助,将不胜感激!

android android-jetpack-compose

7
推荐指数
1
解决办法
6000
查看次数

Ionic3 / Ngx-translate - 带有外部 URL 的 TranslateHttpLoader

我在 app.module.ts 中使用 TranslateHttpLoader 从服务器加载翻译文件,如下所示:

export function createTranslateLoader(http: Http) {
   return new TranslateHttpLoader(http, AppConfig.API_URL+'/static/i18n/', '.json');
}

@NgModule({
  ...

  imports: [

    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: (createTranslateLoader),
        deps: [Http]
      }
    }), 

  ],
  ...
})
Run Code Online (Sandbox Code Playgroud)

一切正常,但我想知道是否有办法在加载程序因任何原因(服务器问题、网络连接等)无法检索语言文件时捕获事件,并可能加载带有一些默认翻译字符串的本地 json 文件?

如果第一次加载的应用程序无法获取语言文件,我想捕获此事件,并回退到最小的本地 json 文件以仅显示翻译的维护页面/错误页面或其他内容。

ngx-translate ionic3

5
推荐指数
2
解决办法
4777
查看次数

Next.js 13(应用程序目录)- 在布局中访问页面元数据

我正在appNext.js 13 项目中使用新的文件夹结构,并且我想在RootLayout包含页面标题值的子标题中显示一个子标题(我在每个页面上使用元数据来配置标题)。

有什么方法可以通过SSR直接访问该值吗?

示例布局.js:

export default function RootLayout({ children) {
    const pageTitle = "???"; // How to get this value?
    return (
      <html>
        <body>
          <HeaderComponent />
          <div className="subheader">
            <h3>{pageTitle}</h3>        <------ HERE
          </div>
          <div className="content">{children}</div>
          <FooterComponent />
        </body>
      </html>
    )
);
Run Code Online (Sandbox Code Playgroud)

示例 page.js:

export const metadata = {
    title: "Login"
};

export default function Login() {
    return (
        <div>Login form</div>
    );
}
Run Code Online (Sandbox Code Playgroud)

javascript reactjs next.js

5
推荐指数
1
解决办法
2726
查看次数

SceneKit - 根据方向旋转带有平移手势的SCNNode

我正在编写我的第一个场景包项目,我正在尝试使用平移手势来旋转场景中的一个简单对象(对象是从.dae文件导入的简单L立方体形状,正确设置了轴点).

我经历了多个SO解决方案和教程,并且我已经整理了一些代码,但轮换工作不正常.如果我反复尝试沿一个轴旋转对象,它可以正常工作,但是当我尝试另一个方向时,在平移开始时,对象重置为它的初始位置.有时旋转也会随机怪癖或跳跃.我不确定我是否使用了正确的方法,请指教..这是我的代码:

func handlePan(sender: UIPanGestureRecognizer){

    // determine pan direction
    let velocity: CGPoint = sender.velocity(in: sender.view!)
    if self.panDirection == nil {
        if velocity.x > 0 && velocity.x > abs(velocity.y) { self.panDirection = "right" }
        if velocity.x < 0 && abs(velocity.x) > abs(velocity.y) { self.panDirection = "left" }
        if velocity.y < 0 && abs(velocity.y) > abs(velocity.x) { self.panDirection = "up" }
        if velocity.y > 0 &&  velocity.y  > abs(velocity.x) { self.panDirection = "down" }
    }

    // do rotation only on selected SCNNode …
Run Code Online (Sandbox Code Playgroud)

rotation ios scenekit swift

3
推荐指数
1
解决办法
1381
查看次数

xcode9 / SceneKit - .dae 文件未加载到 SCNScene - 返回 nil

我正在尝试使用以下代码将 .dae 文件加载到 SCNScene 中:

let solutionScene = SCNScene(named: "art.scnassets/level1.dae")
print(solutionScene?.rootNode) // prints nil

solutionNode = solutionScene?.rootNode.childNode(withName: "level1", recursively: true)
Run Code Online (Sandbox Code Playgroud)

我使用默认设置从 Blender 导出 .dae 文件作为 COLLADA,只包含一个简单的对象。

当我在 XCode 的 art.scnassets 文件夹中单击 .dae 文件时,它打开没有问题,我可以看到几何图形、相机等。

我只是无法在 SCNScene 中加载它。我在 Blender 方面或 Xcode/Swift 方面有什么遗漏吗?

xcode collada scenekit swift

2
推荐指数
1
解决办法
1544
查看次数