ImageView присутствует, но не отображается на дисплее

Я подозреваю, что проблема в том, что вы действительно не используете диспетчерскую группу. Проблема здесь в том, что цикл for по существу выполняется и завершается немедленно - да, эти обратные вызовы будут вызываться в более поздней точке, но это не означает, что код, сообщающий группе диспетчеризации, должен уйти.

(Кроме того, я не вижу вызов notify в вашем примере кода, но я предполагаю, что это часть кода, который вызывается позже.)

Поэтому, если вы делаете что-то в своем коде, которое зависит от того, что эти изображения уже загружены, вы получите сообщение об ошибке. И я подозреваю, что это, вероятно, работает во второй раз, потому что вы захватываете кешированные данные, которые, вероятно, выполняются достаточно быстро для ваших целей.

Один из способов исправить это - убедиться, что вы добавляете отправку элементы группы в нужных местах. Может быть, что-то вроде этого ...

let group = DispatchGroup()
print("starting ImageSetting")
for query in friendArray {
    if imageList[query.uid] == nil {
        print("going through iteration")
        group.enter()
        self.profpicRef.child("profile_pic/" + query.uid + ".jpeg").getData(maxSize: 1
        * 1024 * 1024) { (data, error) in
            print("accessing image")
            if let error = error {
                self.imageList[query.uid] = self.defaultImage
            } else {
                self.imageList[query.uid] = UIImage(data: data!)
            }
            group.leave()
        }
    }
}
group.notify(queue: .main) {
    print("Images done loading")
}
1
задан brent_mb 19 January 2019 в 06:11
поделиться

1 ответ

Вид изображения, который вы хотите отобразить сверху, должен относиться к одному из видов, а не к краю родителя. Это то место, где вы хотите, но за обоими вашими относительными взглядами, т.е. вам нужно сосредоточиться на краю родного брата. Также установите свойство возвышения, чтобы убедиться, что оно сверху.

<ImageView
    android:id="@+id/ImageView"
    android:layout_width="wrap_content"
    android:elevation="2dp"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/siblingRelativeView1"
app:layout_constraintBottom_toBottomOf="@+id/siblingRelativeView2"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"/>

Этот gif демонстрирует концепцию текстового просмотра к центру изображения, вам нужно отцентрировать верхнюю часть к первому относительному виду и нижнюю ко второму относительному виду.

Centering to sibling view

Попробуйте прочитать это .

0
ответ дан kkarakk 19 January 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: