Как использовать рисунки в составной мультиплатформе?IOS

Программируем под IOS
Ответить
Anonymous
 Как использовать рисунки в составной мультиплатформе?

Сообщение Anonymous »

Я разрабатываю приложение Compose Multiplatform и хочу использовать одни и те же активы PNG, которые можно нарисовать, как для Android, так и для iOS.

Код: Выделить всё

androidApp/src/main/res/
drawable-mdpi/icon.png
drawable-hdpi/icon.png
drawable-xhdpi/icon.png
drawable-xxhdpi/icon.png
drawable-xxxhdpi/icon.png
< /code>
для iOS в Commonmain < /p>
commonMain/composeResources/drawable/
icon.png
icon@2x.png
icon@3x.png
В качестве следующего шага мне нужно получить этот значок в Commonmain/Kotlin/Packer/app.kt как

Код: Выделить всё

rememberPngPainter("icon.png")
< /code>
Во -первых, мой подход правильно? Согласно Chatgpt и Gemini, это правильно, но это не работает для части iOS. Согласно AIS, я должен сделать для такой части Android, которая работает: < /p>
@Composable
actual fun rememberPngPainter(name:String) : Painter {
@SDrawableRes
val icon = when(name) {
"icon" -> R.drawable.icon
else -> R.drawable.other_icon
}
return painterResource(id = icon)
}
< /code>
для части iOS, как это: < /p>
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import platform.UIKit.UIImage

@Composable
actual fun rememberPngPainter(name: String): Painter {
val icon = when(name) {
"icon" -> "icon.png"
else -> "other_icon.png"
}

val uiImage = UIImage.imageNamed(name)
?: error("Image not found: $imageName")

val imageBitmap: ImageBitmap = uiImage.toImageBitmap()
return BitmapPainter(imageBitmap)
}
< /code>
, который не работает, поскольку нет библиотеки, чтобы использовать < /p>
.toImageBitmap()
< /code>
и chatgpt отвечает "Я не могу вам помочь с этим". Но Gemini дает мне альтернативу использовать < /p>
painterResource(resource = "icon.png")
< /code>
, который также не существует, тогда как Gemini (также AKSED Chagpt) говорит, что это здесь, чтобы найти: < /p>
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "1.5.1 or higher" }
< /code>
Я проверил все версии, и когда-либо был какой-либо художественный вход с помощью строкового ввода, только < /p>
fun painterResource(resource: DrawableResource)
Что еще я могу попробовать?


Подробнее здесь: https://stackoverflow.com/questions/796 ... tiplatform
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»