Требуются примеры Objective C

Я пытаюсь добавить полосы прокрутки в IKImageView. По сути, на данный момент мне нужно несколько примеров программы, которая загружает изображение в представление и, если окно слишком маленькое, устанавливает полосы прокрутки, которые делают правильные вещи...

Почему я не могу найти эти примеры на сайте разработчиков Apple?

Добавлена ​​информация:

После просмотра ImagekitDemo я вижу, что, очевидно, мне нужно встроить IKIMageView в ScrollView. (и каким-то образом это делает свойства has___Scroller IKImageView YES...)

Однако теперь (и это верно и в ImageKitDemo) полосы прокрутки в порядке, если только одна (или ни одна) не нужна. Однако, как только оба нужны, и размер окна меньше размера изображения, ОБЕ полосы прокрутки исчезают.

Прокрутка мышью по-прежнему работает.


person Brian Postow    schedule 14.01.2010    source источник
comment
См. мой ответ в вашем другом вопросе.   -  person Nicholas Riley    schedule 24.01.2010


Ответы (2)


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
person slf    schedule 21.01.2010
comment
Да, у меня есть полосы прокрутки для работы с NSView, но для меня это не масштабирование, вращение и обрезка... Я бы хотел, чтобы IKImageView работал... - person Brian Postow; 21.01.2010

Лучше всего начать с Программирование представления прокрутки. Руководство. По сути, вам нужно поместить IKImageView внутри NSScrollView. Если размер IKImageView превышает видимый прямоугольник NSScrollView, появятся полосы прокрутки.

В следующем примере используется IKImageView для выполнения различных операций масштабирования и изменения размера. .

person Laurent Etiemble    schedule 15.01.2010
comment
хотя IKImageView утверждает, что у него есть полосы прокрутки? Кроме того, когда я это делаю, изображение центрируется в огромном изображении, и поэтому видна только его часть... и когда изображение меньше, чем прокрутка, вы получаете белый фон. Я полагаю, что МОГУ сделать нормальную вещь, сделав изображение размером с изображение и имея за ним еще одно серое представление... но это побеждает некоторые цели ikimageview... - person Brian Postow; 15.01.2010
comment
Прошу прощения, я слишком быстро прочитал документацию. ZoomImageTo... предназначены для изменения прямоугольника изображения и, следовательно, видимой части в IKImageView. Есть некоторые свойства, которые определяют, видны полосы прокрутки или нет. Кроме того, вы можете взглянуть на следующий пример кода: developer.apple .com/mac/library/samplecode/IKImageViewDemo/ - person Laurent Etiemble; 15.01.2010
comment
да, я пытался изменить свойства, но [_imageView setHasHorizontalScroller: YES] не имеет никакого эффекта ([_imageView hasHorizontalScroller] возвращает 0 сразу после этого). И этот пример — то, над чем я работал. Вроде показано как делать все, НО полосы прокрутки B-) - person Brian Postow; 15.01.2010