How to load / show a UIImageView in cell after cell is populated

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

I have a UICollectionView of images, and in the corner of each cell i have a watermark (or a small icon). The images are fetched remotely and the icon is hardcoded (local). Everything is works fine except for one ugly problem: The local watermark icon is loading every cell first, while fetching the images, which is not a good look. ---> I'm looking for a way to load / show the watermark icon (UIImageView) after the each cell is populated (or worse case, after all cells are populated). Your help is always appreciated!

1. Is this possible? 2. Where would i implement it: cellForItemAtviewDidLoad, etc.? 3. and then what would be the code. Please note i am relatively new to coding.

This is how i populate the collectionView with remotely store image (listeners not included):

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
    {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "myproductCell", for: indexPath) as! MyProductsCollectionCell
        if (self.products.indices.contains(indexPath.row)) {
            let product = self.products[indexPath.row]
            cell.configureWithProduct(Product(caption: product.caption, videoUrl: product.videoUrl, imageUrl: product.imageUrl))

        }
        return cell
    }

And I've just created an outlet for the locally stored watermark (icon):

@IBOutlet weak var watermark: UIImageView!

profilepic.png
manpreet 2 years ago

I haven't seen your code, so I can't comment. But definitely not in viewDidLoad.

You could use blocks to implement this in cellForItemAt.

- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    // download the image on the background thread
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // once you have the image downloaded, 
        // set the image on a main thread
        // in the completion handler
        dispatch_async(dispatch_get_main_queue, ^{
            callback(yourImage); // this can be a call to your method.
        });
    });
}

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.