Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
#1

Выводится картинка на view сразу при запуске программы и только один раз

12.05.2014, 01:12. Просмотров 723. Ответов 6
Метки нет (Все метки)

Ну собственно это продолжение вопроса на мой предыдущий вопрос про вывод картинки, с выводом я почти разобрался, в свойстве customclass объекта view указываю созданный мной класс QuartzImageView который выглядит так:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#import "QuartzImages.h"
@implementation QuartzImageView
{
    CGImageRef _image;
}
-(void)drawInContext:(CGContextRef)context
{
    CGRect imageRect;
    imageRect.origin = CGPointMake(50.0, 150.0);
    imageRect.size = CGSizeMake(64.0, 64.0);
    CGContextDrawImage(context, imageRect, self.image);
}
- (CGImageRef)image
{
    if (_image == NULL)
    {
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"Demo" ofType:@"png"];
        UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
        _image = CGImageRetain(img.CGImage);
    }
    return _image;
}
@end
но блин, картинка начинает отрисовываться сразу при запуске проекта, хотя я ни где не вызывал ни один из выше указанных методов, и что еще более огорчительно, после запуска проекта я не могу вызвать не один из выше указанных методов повторно, потому что вылетает ошибка - signal signbart. Друзья, мне вот все твердят что отрисовать картинку очень просто и делается это в пару строк кода, однако ни кто не может сказать как. Да и еслиб это так просто было то в примере кода не было бы такой кучи тк все что выше(код) указанное я скачал с сайта эппдевелопер и просто обрезал отбросив лишнее. Оооочень прошу помогите, поделитесь опытом, каждую каплю информации просто неимоверным трудом приходится добывать, Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 01:12
Ответы с готовыми решениями:

При первом запуске программно переключиться на второй view controller (его не видно)
Добрый день. Есть 2 view controller'а. Во втором текстовое поле. Если оно не...

Как выполнить код только один раз (при запуске программы?)
Как известно, At module level, you can use only comments and declarative...

Как мне сделать так, чтобы данный текстовый файл был открыт один раз при запуске программы и закрыт при закрытии программы?
Привет! Возник следующий вопрос. Программа состоит из основного окна Form1 и...

Растровая графика, картинка рисуется только один раз, без анимации
Всем доброго времени суток! Есть такая функция: void Draw(HDC hdc, HDC...

Хочу сделать вывод суммы цифр один раз в конце программы, а он дважды выводится
import java.util.Scanner; public class PApp3 { public static void...

6
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 08:19 #2
Лучший ответ Сообщение было отмечено nikitossssss как решение

Решение

nikitossssss, давайте по порядку.

1.
картинка начинает отрисовываться сразу при запуске проекта
Если взять за данность, что ваш код рабочий, то вы явно указываете, Какой файл и откуда отрисовывать:
Objective-C
1
2
3
4
5
6
7
8
9
10
- (CGImageRef)image
{
    if (_image == NULL)
    {
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"Demo" ofType:@"png"];
        UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
        _image = CGImageRetain(img.CGImage);
    }
    return _image;
}
2.
хотя я ни где не вызывал ни один из выше указанных методов
А вам и не нужно... Это система за вас сделает, если вы ей информацию подкинете где и что брать. Если подробнее - читайте тему рендеринга в iOS.
3.
вылетает ошибка - signal signbart
Где вылетает, на какой строчке?
4. Вы приводите код, но
Objective-C
1
@implementation QuartzImageView
Ничего не дает. Где @interface? Я подразумеваю, что вы отнаследовались от UIImageView... Этого делать для вашей задачи не нужно.
5.
не было бы такой кучи тк все что выше(код)
Это же всего 7 строчек кода... Какая куча. И да, вы правы, это не нужно совершенно.

P.S.
Вам это было нужно?:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *buttonToShowImageView = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    buttonToShowImageView.frame = CGRectMake(0,0,200,50);
    [buttonToShowImageView setTitle:@"Tap me!" forState:UIControlStateNormal];
    [buttonToShowImageView addTarget:self action:@selector(onButtonTap:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:buttonToShowImageView];
}
 
- (void)onButtonTap:(UIButton *)sender {
    UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Demo.png"]];
    iv.center = sender.center;
    [self.view addSubview:iv];
}
P.P.S
Добавьте этот код в наследника UIViewController.
1
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 12:54  [ТС] #3
Zulkis, огромное спасибо! С работы приду, посмотрю но думаю все будет работать. И скажите пожалуйста выше указанный код предназначен для вызова руками? Потомучто код написанный мной вызывается системой, а мне это не надо.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 13:13 #4
nikitossssss, пожайлуйста. Почитайте и посмотрите.
0
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 15:14  [ТС] #5
Zulkis, странно но ваш код не работает поче му то, по нажатию кнопки ни чего не происходит(((( Мож я че не так сделал поэтому подкрепляю картинками
0
Миниатюры
Выводится картинка на view сразу при запуске программы и только один раз   Выводится картинка на view сразу при запуске программы и только один раз  
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 17:25 #6
Цитата Сообщение от nikitossssss Посмотреть сообщение
Zulkis, странно но ваш код не работает поче му то, по нажатию кнопки ни чего не происходит(((( Мож я че не так сделал поэтому подкрепляю картинками
Ох эти ваши картинки... Вы breakpoint поставьте в метод, а потом уже говорите работает или нет.
Для пущей уверенности можете добавить:
Objective-C
1
iv.backgroundColor = [UIColor redColor];
После
Objective-C
1
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Demo.png"]];
А потом картинку проверьте свою "Demo.png". Скорее всего ее у вас даже в проекте нету.

Вопрос:
Вы вообще хоть что-нибудь читали? Или так, на удачу все делаете?
0
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 20:42  [ТС] #7
короче ваще нече не работает, голова уже кепит от этого!
Единственный рабочий проект который имеется содержит следущий код, который от всех вышеуказанных, как мне кажется оптимальный, да и работает так как надо - рисует картинку по клику мышки
Objective-C
1
2
3
4
5
6
7
8
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIImageView *splashImageView;
    splashImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pets.jpg"]];
    splashImageView.frame = CGRectMake(50, 150, 50, 50);
    [self.view addSubview:splashImageView];
   // NSLog(@"hello")
}
Но у него есть недостаток - кроме peets.jpg он ничего другого выводить не хочет, а когда я поудалял эту pets.jpg отовсюду и из папки и из медиатеки xcode программа продолжает ее отрисовывать, откуда? она ее берет - я вообще недоумеваю и это поставило меня в глубокий ступор. И вот скажу честно я никогда не поверю, что чтоб просто вывести картинку нужно написать два метода по 8 строк кода, в делфи(я раньше на нем работал) это занимало три строчки добавленные в любой метод и тут думаю также можно просто ни кто не знает как это((((((((
0
12.05.2014, 20:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 20:42

Картинка при запуске программы
Привет всем. Как сделать так чтобы при запуске приложения WinForm, сначала...

Появляется картинка при запуске программы
Всем привет! Как сделать, чтобы при запуске программы, появилось сначала...

При запуске программы выводится дамп памяти
#include <math.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru