在Xcode中5我已經創建a universal app,與含有UIImageView
(這裏fullscreen)一個UIScrollView
:比例縮小的UIImageView放置在一個UIScrollView
自從我在界面生成器設置的所有UI屬性(要顯示的圖像,1000×1000個像素的UIImageView
尺寸和UIImageView
模式設置爲「縮放以填充」),在ViewController.m實際的源代碼是很短:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
/*
if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
_imageView.frame = CGRectMake(_imageView.frame.origin.x,
_imageView.frame.origin.y,
800, 800);
}
*/
_scrollView.contentSize = _imageView.bounds.size;
NSLog(@"%s: _scrollView %@ %@",
__PRETTY_FUNCTION__,
NSStringFromCGPoint(_scrollView.frame.origin),
NSStringFromCGSize(_scrollView.frame.size));
NSLog(@"%s: _imageView %@ %@",
__PRETTY_FUNCTION__,
NSStringFromCGPoint(_imageView.frame.origin),
NSStringFromCGSize(_imageView.frame.size));
}
在iPhone和iPad上,這個功能令人驚訝(適用於我的iOS新手),而且應用程序甚至可以旋轉。
不過,對於iPhone顯示的圖像是有點過大,需要按比例縮小爲更舒適的遊戲:
我希望,即由於UIImageView
模式是「規模要填寫」 ,我只需要更改它的frame
(或bounds
?我已經嘗試了兩種) - 就像上面顯示的註釋代碼一樣。
但這不起作用 - 滾動中斷(無法滾動到圖像底部了)。
有什麼建議嗎?
(我也希望稍後添加一個雙擊和雙擊手勢識別器,並且也可以在其中縮放UIImageView
)。
UPDATE:
我已經試過以下安德烈的建議通過添加以下代碼到viewDidLayoutSubviews
,但圖像沒有縮小(謝謝!):
if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
_scrollView.maximumZoomScale = 1.2;
_scrollView.minimumZoomScale = .8;
_scrollView.zoomScale = .8;
}
+1謝謝,但是當我設置'_scrollView.zoomScale = .8'時,圖像不會縮小(請參閱更新後的問題)。 –
是的,我的壞,因爲Legoless狀態,你還需要實現從UIScrollViewDelegate的方法 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { }方法。 它應該只是返回imageView。 我也更新了我的答案。 – Andrei