Я использую некоторый код, извлеченный из примера PhotoScroller (WWDC10).Но я использую UIView вместо UIImageView.Это единственное изменение, которое я сделал (в подклассе UIScrollView).
Моя проблема, когда я вызываю 'configureForViewSize'.Он пытается применить zoomScale 0,66 (чтобы показать полный вид), но это не работает.
После установки self.minimumZoomScale = minScale я смотрю на значение self.zoomScale, и оно всегда равно 1
- (void)displayView:(UIView *)mView
{
// clear the previous view
[view removeFromSuperview];
[view release];
view = nil;
// reset our zoomScale to 1.0 before doing any further calculations
self.zoomScale = 1.0;
[self addSubview:mView];
[self configureForViewSize:mView.frame.size];
}
- (void)configureForViewSize:(CGSize)viewSize
{
CGSize boundsSize = [self bounds].size;
// set up our content size and min/max zoomscale
CGFloat xScale = boundsSize.width / viewSize.width; // the scale needed to perfectly fit the image width-wise
CGFloat yScale = boundsSize.height / viewSize.height; // the scale needed to perfectly fit the image height-wise
CGFloat minScale = MIN(xScale, yScale); // use minimum of these to allow the image to become fully visible
// on high resolution screens we have double the pixel density, so we will be seeing every pixel if we limit the
// maximum zoom scale to 0.5.
CGFloat maxScale = 1.0 / [[UIScreen mainScreen] scale];
// don't let minScale exceed maxScale. (If the view is smaller than the screen, we don't want to force it to be zoomed.)
if (minScale > maxScale) {
minScale = maxScale;
}
NSLog(@"contentSize %f %f", viewSize.width, viewSize.height);
NSLog(@"minScale %f", minScale);
NSLog(@"maxScale %f", maxScale);
self.contentSize = viewSize;
self.maximumZoomScale = maxScale;
self.minimumZoomScale = minScale;
//--> THIS IS NOT WORKING! =(
self.zoomScale = minScale; // start out with the content fully visible
NSLog(@"self.zoomScale %f", self.zoomScale);
}
Сообщения консоли:
2011-03-29 10: 18: 39.950 MyProj [6259: 207] contentSize 1536.000000 893.000000
2011-03-29 10:18: 39,953 MyProj [6259: 207] minScale 0,666293
2011-03-29 10: 18: 39,954 MyProj [6259: 207] maxScale 1,000000
2011-03-29 10: 18: 39,955 MyProj [6259: 207]self.zoomScale 1.000000
РЕДАКТИРОВАТЬ:
Я понял это сам.Я забыл назначить view = mView в методе "displayView" = (