ProductViewHeader.h 3.21 KB
Newer Older
1
//
2
//  ProductViewHeader.h
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
//  Mobile Buy SDK
//
//  Created by Shopify.
//  Copyright (c) 2015 Shopify Inc. All rights reserved.
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.
//

@import UIKit;
28 29 30
@import Buy;

@class AsyncImageView;
31
@class BUYProductVariant;
32
@class HeaderOverlayView;
33 34 35 36 37

/**
 *  The tableHeaderView containing a horizontally scrolling collection view
 *  that display product images.
 */
38
@interface ProductViewHeader : UIView
39 40 41 42 43 44 45 46 47 48

/**
 *  A horiztonally scrolling collection view containing product images.
 */
@property (nonatomic, strong) UICollectionView *collectionView;

/**
 *  An overlay view containing effects views (light or dark view and a UIVisualEffectsView) that becomes
 *  visible as the user scrolls the contents up. This provides a more seamless transition for the navigation bar.
 */
49
@property (nonatomic, strong) HeaderOverlayView *productViewHeaderOverlay;
50 51 52 53 54 55 56 57 58

/**
 *  Initializer with a frame to setup the product image collection view and theme the header
 *
 *  @param frame Used for setting up the correct size of the collection view cells
 *  @param theme The theme for the product view
 *
 *  @return The product view header to display in the BUYProductViewController's table view tableHeaderView
 */
59
- (instancetype)initWithFrame:(CGRect)frame;
60 61 62

/**
 *  A method to set the content offset of the table view and calculate the height of the image
63
 *  used to set the correct height and offset for the stickyFooterView in the ProductView.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
 *
 *  @param scrollView The table view being scrolled
 *
 *  @return The height for the product image.
 */
- (CGFloat)imageHeightWithScrollViewDidScroll:(UIScrollView *)scrollView;

/**
 *  Updates the page control with the currently display product image index.
 *
 *  @param currentPage The current index for the product image displayed.
 */
- (void)setCurrentPage:(NSInteger)currentPage;

/**
 *  When a BUYProductVariant is set update the product images accordingly by scrolling to the image
 *  matching the selected product variant.
 *
 *  @param productVariant The selected product variant.
 *  @param images         An array of product images for a product.
 */
- (void)setImageForSelectedVariant:(BUYProductVariant*)productVariant withImages:(NSArray*)images;

@end