TGLStackedViewController icon indicating copy to clipboard operation
TGLStackedViewController copied to clipboard

How to get real contentSize?

Open Ewg777 opened this issue 6 years ago • 9 comments

Hi,

Thanks for such a great lib!

How to get real height of the content without filling and so on?

Here is an example but it doesn't work properly with you lib. Do you have any idea? @gleue

class MyCollectionView: UICollectionView {
    // MARK: - Layout
    override func layoutSubviews() {
        super.layoutSubviews()

        let height = contentSize.height
        guard
            height > 1 else {
                return
        }
// here the height
    }
}

P.s. I'd like to use two instances of the lib on a page.

Regards,

Ewg777 avatar Mar 28 '19 09:03 Ewg777

@gleue

Ewg777 avatar Mar 28 '19 09:03 Ewg777

Did you mean the height of (overlapping) cards combined?

gleue avatar Mar 29 '19 07:03 gleue

2019-03-29_11-02-55 @gleue this one

Ewg777 avatar Mar 29 '19 08:03 Ewg777

Have you tried collectionView.collectionViewLayout.collectionViewContentSize ?

gleue avatar Mar 29 '19 08:03 gleue

@gleue unfortunately, it's not public method. Also this method will always return self.collectionView.bounds


    if (contentSize.height < CGRectGetHeight(self.collectionView.bounds)) {

        contentSize.height = CGRectGetHeight(self.collectionView.bounds);

Ewg777 avatar Mar 29 '19 08:03 Ewg777

Oops -- didn't look at the code ;-)

Sorry, then you'd probably have to determine it from your own version of TGLStackedLayout. Have a look at prepareLayout...

gleue avatar Mar 29 '19 08:03 gleue

@gleue right, I've made a workaround in TGLStackedLayout and TGLExposedLayout. It works for TGLExposedLayoutPinningModeNone.


- (void)prepareLayout {
    CGRect realContentSize = CGRectZero;
    for (NSInteger item = 0; item < itemCount; item++) {
...

        layoutAttributes[indexPath] = attributes;
        realContentSize = CGRectUnion(attributes.frame, realContentSize);
    }
    self.realContentSize = realContentSize;

    self.layoutAttributes = layoutAttributes;
}


Do you have a better solution?

Ewg777 avatar Mar 29 '19 09:03 Ewg777

Elegant 👍

I don't have a better solution off the top of my head... Would have to think about it, but I am really busy at the moment, so it would take some time

gleue avatar Mar 29 '19 09:03 gleue

Great! Thanks!

Ewg777 avatar Mar 29 '19 09:03 Ewg777