Простой ответ с примером ответа; -)
в iOS Simulator,
Нажмите Command + control + c или из меню: Редактировать> Экран копирования
открыть приложение « Предварительный просмотр », Команда «Нажать» + n или из меню: Файл> Новый из буфера обмена, затем вы можете сохранить Command + s
UnCheck Alpha ]
Вы можете изменить размер изображения в соответствии со своими требованиями.
Вот окончательное изображение, например
Возможно, время для более нового решения. Это методы проверяют 5 раз каждые 50 мс, если родительское представление для PopupWindow имеет маркер. Я использую его в своем специализированном PopupWindow.
private fun tryToShowTooltip(tooltipLayout: View) {
Flowable.fromCallable { parentView.windowToken != null }
.map { hasWindowToken ->
if (hasWindowToken) {
return@map hasWindowToken
}
throw RetryException()
}
.retryWhen { errors: Flowable<Throwable> ->
errors.zipWith(
Flowable.range(1, RETRY_COUNT),
BiFunction<Throwable, Int, Int> { error: Throwable, retryCount: Int ->
if (retryCount >= RETRY_COUNT) {
throw error
} else {
retryCount
}
})
.flatMap { retryCount: Int ->
Flowable.timer(retryCount * MIN_TIME_OUT_MS, TimeUnit.MILLISECONDS)
}
}
.onErrorReturn {
false
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ hasWindowToken ->
if (hasWindowToken && !isShowing) {
showAtLocation(tooltipLayout, Gravity.NO_GRAVITY, 100, 100)
}
}, { t: Throwable? ->
//error logging
})
}
с
companion object {
private const val RETRY_COUNT = 5
private const val MIN_TIME_OUT_MS = 50L
}
class RetryException : Throwable()