Задача
Проблема, с которой я сталкиваюсь, заключается в том, что я увеличиваю свой UIScrollView (с включенной подкачкой страниц), а затем перемещаюсь (прокручивать?) Вниз - я могу хорошо перетаскивать свое представление и видеть большую область фона прокрутки. Чем дальше я увеличиваю изображение, тем больше фона от UIScrollView.
(Я установил зеленый фон прокрутки, чтобы я мог видеть, на что смотрю).
Не уверен, почему фоновая область выставляется так ...?
Я поиграл с настройкой размера кадра прокрутки, размера границ, размера контента и т. Д. В разных местах безрезультатно.
К сожалению, я не могу публиковать скриншоты того, что происходит из-за того, что я новый пользователь: (
Дополнительная информация:
Основной вид моего приложения содержит полноэкранный размер UIScrollView, заполненный несколькими подпредставлениями UIView. Эти подпредставления добавляются в представление прокрутки путем создания имен перьев в цикле for, а затем извлечения их с помощью метода loadNibNamed для создания и добавления UIView.
Каждый из этих UIViews был разработан в IB и содержит следующее: UIImageView, атрибут изображения которого установлен на изображение .jpg, еще один меньший UIScrollView под ним и прозрачный UIView поверх моего viewview, который содержит кучу пользовательских UIButtons.
После того, как я заполнил свой scrollView, я установил некоторые его атрибуты, такие как contentSize, pagingEnabled, min & maxZoomScale и т. Д., А затем установил его делегат self (MainViewController).
Основные методы MainViewController:
@implementation MainViewController_iPhone
@synthesize scrollView, loadedNibView;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self loadNibs];
[self initializeOrientation];
}
-(void) loadNibs {
currentPage = 0;
for (int i = 0; i < NUM_VIEWS; i++) {
loadedNibView = [self getNibView:i]; //load the UIView from the associated nib file
loadedNibView.tag = i; //used later to retrieve view for current page
[scrollView addSubview:loadedNibView];
}
//Set the content size to sum of the widths of the all UIViews
scrollView.contentSize = CGSizeMake(self.view.frame.size.width * NUM_VIEWS, self.view.frame.size.height);
scrollView.pagingEnabled = YES;
scrollView.bounces = YES;
scrollView.clipsToBounds = YES;
//scrollView.alwaysBounceVertical = YES;
//zoom features
scrollView.maximumZoomScale = 5.0;
scrollView.minimumZoomScale = 1;
scrollView.delegate = self;
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)myScrollView {
return [myScrollView viewWithTag:(currentPage)];
}
- (void)scrollViewDidScroll:(UIScrollView *)myScrollView {
CGFloat pageWidth = myScrollView.frame.size.width;
currentPage = floor((myScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
}
- (void)scrollViewDidZoom:(UIScrollView *)myScrollView {
}
- (void)scrollViewWillBeginZooming:(UIScrollView *)myScrollView withView:(UIView *)view
{
//zooming & paging do not work well together; disable paging while we're zooming
myScrollView.pagingEnabled = NO;
}
- (void)scrollViewDidEndZooming:(UIScrollView *)myScrollView withView:(UIView *)view atScale:(float)scale
{
if(scale == 1) //if we're zoomed entirely back out
{
//re-enable paging & reset the content size
myScrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(self.view.frame.size.width * NUM_VIEWS, self.view.frame.size.height); //without this line, can no longer page through scrollview after zooming
}
}
@end
И это .h:
@interface MainViewController_iPhone : MainViewController <UIScrollViewDelegate> {
IBOutlet UIScrollView *scrollView; //The main ScrollView that scrolls between pages of different images to search
UIView *loadedNibView; //The UIView that we load from it's corresponding nib (i.e. IMG1_iPhone.xib)
int currentPage;
}
//methods
-(void) loadNibs;
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)myScrollView;
- (void)scrollViewWillBeginZooming:(UIScrollView *)myScrollView withView:(UIView *)view;
- (void)scrollViewDidEndZooming:(UIScrollView *)myScrollView withView:(UIView *)view atScale:(float)scale;
- (void)scrollViewDidZoom:(UIScrollView *)myScrollView;
- (void)scrollViewDidScroll:(UIScrollView *)myScrollView;
//properties
@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIView *loadedNibView;
@end
Любые идеи / советы будут с благодарностью ... Спасибо!