2013-03-07 4 views
0

Я пытаюсь создать экземпляр изображения программно, моя цель - иметь серию Empty.png на экране в разных точках по горизонтали. Я понятия не имею, как это сделать, но в первую очередь я просто пытаюсь сделать одно изображение на экране. Это мой код в файле .m.Создание изображения на экране?

- (void)drawAtPoint:(CGPoint)point { 
point = CGPointMake(100.0,100.0); 
UIImageView *img = [[UIImageView alloc] init]; 
img.image = [UIImage imageNamed:@"Empty.png"]; 
[self.view addSubview:img]; 

Заранее благодарю за любую помощь.

ответ

3

Вы принимаете совершенно неправильный подход.

В качестве новичка, если вы нашли код рисования (drawAtPoint:, drawInRect: и т. Д.), Вы почти наверняка находитесь в неправильном месте.

Специально для таких вещей, как загрузка и отображение изображений, iOS выполняет почти всю работу за вас, поэтому вам действительно не нужно ничего рисовать самостоятельно.

Пожалуйста, не принимайте это неправильно, но сделайте себе большую услугу и получите хорошую вводную книгу по этому вопросу. Книги из серии Big Nerd Ranch Guide превосходны и очень хорошо стоят денег.

EDIT:

Если вы действительно не хотите, чтобы получить книгу (пожалуйста, ради себя, получить книгу - я сделал, и я очень рад, что я сделал), вот быстрый способ, который должно сработать.

У вас была правильная идея в создании UIImageView, но вы используете его неправильно.

У вас, вероятно, есть UIViewController где-то в вашем приложении. Найти (или создать) метод - (void)viewDidLoad и отображать изображение оттуда:

- (void)viewDidLoad 
{ 
    UIImage *myImage = [UIImage imageNamed:@"Empty"]; //you can leave out PNG. 
    UIImageView *myFirstImageView = [[UIImageView alloc] initWithImage:myImage]; //this automatically gives the UIImageView the correct height and width 
    [self.view addSubview:myFirstImageView]; //That's all. UIKit will handle displaying the imageView automatically. 
} 

Это изображение появится в верхнем левом углу экрана.

Вы можете легко перемещать его, вставив следующую строку где-то после UIImageView *myFirst...:

myFirstImageView.center = CGPointMake(210.0, 345.0); 

Я упоминал книги Big Nerd Ranch велики, чтобы узнать о развитии IOS, а также даже интересно читать?

Кроме того, официальная документация очень хорошая (хотя и не такая забавная или легко читаемая, и не объясняет так много).

0

Извините, мой предыдущий ответ был неправильным. Я не понимал, что вы делаете drawInRect.

Не используйте изображение. Здесь вы должны оставаться с основной графикой. Объекты UIImageView могут быть полезны, но только его части.

[img drawAtPoint:point]; 

должен сделать трюк.

+0

Это слишком низкоуровневый материал, и это приведет только новичка в большую кучу проблем. Если вы действительно хотите отображать изображение, 'UIImageView' - это путь. Просто не делайте этого в 'drawRect:' или 'drawAtPoint:'. ImageView обработает чертеж для вас. – fzwo

+0

Это прямой ответ на ее вопрос. Она уже находится в 'drawInSomething' и имеет ошибку, и это исправляет ее ошибку. И, честно говоря, поскольку она зашла так далеко, я не думаю, что drawAtPoint: это ужасно сложный материал. Напротив. Это довольно основательно. –

0

Вы должны установить рамки:

- (void)placeImageViewAtPoint:(CGPoint)point 
{ 
    UIImageView *img = [[UIImageView alloc] init]; 
    img.image = [UIImage imageNamed:@"Empty.png"]; 
    img.frame.origin = point; 
    [self.view addSubview:img]; 
} 

Я не проверить это, но если это выдает ошибку вам необходимо:

- (void)placeImageViewAtPoint:(CGPoint)point 
{ 
    UIImageView *img = [[UIImageView alloc] init]; 
    img.image = [UIImage imageNamed:@"Empty.png"]; 
    CGRect frame = img.frame; 
    frame.origin = point; 
    img.frame = frame; 
    [self.view addSubview:img]; 
} 

и вы, вероятно, следует вызвать этот метод из viewDidAppear или аналогичный метод:

-(void)viewDidAppear 
{ 
    CGPoint point = point = CGPointMake(100.0,100.0); 
    [self placeImageViewAtPoint:point]; 
} 
Смежные вопросы