Цель C примеры, которые искали
Я пытаюсь добавить полосы прокрутки в IKImageView. В основном на данный момент мне нужны примеры программ, которые загружают изображение в представление, и если окно слишком маленькое, устанавливает полосы прокрутки, которые делают правильные вещи...
Почему я не могу найти эти примеры на сайте Apple Dev?
Добавленная информация:
Посмотрев на ImagekitDemo, я вижу, что, очевидно, мне действительно необходимо встроить IKIMageView в ScrollView. (и каким-то образом это делает свойства has___Scroller IKImageView ДА...)
Тем не менее, теперь (и это также верно для ImageKitDemo) Полосы прокрутки в порядке, если требуется только один (или ни один). Однако, как только оба они необходимы, и любое из размеров окна меньше, чем изображение, ОБА полосы прокрутки исчезают.
Прокрутка мыши все еще работает.
2 ответа
Лучшее место для начала - Руководство по программированию Scroll View. По сути, вам нужно поместить IKImageView внутри NSScrollView. Если размер IKImageView превышает видимый прямоугольник NSScrollView, то появятся полосы прокрутки.
В следующем примере IKImageView используется для выполнения различных операций масштабирования и изменения размера.
ZoomViewController.h
@interface ZoomViewController : UIViewController <UIScrollViewDelegate>
{
ForecastImage* detailImage; // wrapper class around UIImage (optional - could just be UIImage)
IBOutlet UIImageView* imageView;
IBOutlet DoubleTapScrollView* zoomableScrollView;
}
@property (readwrite, nonatomic, retain) ForecastImage* detailImage;
- (IBAction) dismissZoomViewController;
- (UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView;
- (void) scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;
@end
ZoomViewController.m
@implementation ZoomViewController
@synthesize detailImage;
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated
{
[imageView setImage:[self.detailImage renderedImage]];
[zoomableScrollView setContentSize:[[imageView image] size]];
[zoomableScrollView setMaximumZoomScale:5.0];
[zoomableScrollView setMinimumZoomScale:0.25];
}
- (void) viewDidAppear:(BOOL)animated
{
self.navigationItem.title = [SearchService getDisplayName:[self.detailImage forecastArea]];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
- (void)dealloc
{
imageView.image = nil;
self.detailImage = nil;
[super dealloc];
}
- (IBAction) dismissZoomViewController
{
[self dismissModalViewControllerAnimated:YES];
}
#pragma mark Pinch-n-Zoom
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return imageView;
}
- (void) scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
CGSize newSize = CGSizeMake(imageView.image.size.width * scale, imageView.image.size.height * scale);
[scrollView setContentSize:newSize];
}
@end