Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: UIWebView + UIImageView

Здравствуйте. Нужно расположить webView под imageView так, чтобы при скролле webView imageView так же скроллилась. Попробовал добавить оба элемента в scrollView, все отображается и двигается как нужно, но не открываются линки внутри webView. В документации написано не класть webView и tableView в scrollView, но как тогда сделать так, чтобы картинка двигалась за webView?
Ответ: Если контент должен сдвигаться, тогда можно обрабатывать контент вебвью и инжектить тег картинки прямо в HTML, либо через js либо если HTML код известен заранее через любой DOM парсер
Вопрос: Изменение видимой области изобр-ния в UIImageView

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

Подобный функционал реализован в приложении для Instagram при загрузке фотографии.

Как это сделать?

Это сообщение отредактировал(а) prguser - 26.6.2014, 12:46
Ответ:
После вывода изображения в UIImageView пользователю нужно масштабировать изображение, перетаскивать в стороны после масштабирования для изменения видимой области изображения.

Подобный функционал реализован в приложении для Instagram при загрузке фотографии.

Как это сделать?

Это сообщение отредактировал(а) prguser - 26.6.2014, 12:46
Вопрос: Логин во внешний сервис через WebView vs Safari

Привет всем!

Был у меня когда-то такой случай: релизил я приложение в AppStore, в котором был реализован логин через VK путем перенаправления юзера в Safari, где он вводит свой логин/пароль, после чего его возвращало обратно в приложение.
Apple мне приложение благополучно зареджектил, с комментом - мол, "выполняйте логин внутри приложения, без использования Safari".
Я переделал логин иначе - дергая из iOS VK SDK некий их модальный контроллер, в котором тоже можно было залогиниться. Это ревьюеров устроило.

В чем вопрос:
После того случая у меня почему-то укоренилось убеждение, что нельзя выполнять логин вообще в "сущности WebView", кем бы оно не было - Safari, или встроенным UIWebView.
И тут, спустя год, пришел мне новый проект, в котором надо выполнять аутентификацию через конкретную WEB страницу (Claims Based Authentication), что без использования WebView выльется в тонну рукописного кода. Я сразу вспомнил тот случай и расстроился.

И тут меня осенило - наверное ж, ревьюеры реджектят приложения только тогда, когда логин выполняется в Safari? Если бы я тогда, в случае с VK использовал бы встроенный UIWebView, то проблем бы не было?
Т.е. я могу свободно юзать у себя в кастомном WebView какие угодно логины, и это не будет нарушением правил?

Подтвердите, или опровергните мое видение, пожалуйста!
Заранее большое спасибо))
Ответ: WebView их небезопасен, они сами про это писали
Вопрос: Встроить Youtube видео в app

Вот наиболее адекватный (ИМХО) работающий пример
Код

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor grayColor];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(500, 400, 90, 40);
    [button setTitle:@"Button" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (void) buttonPressed {
    /*Reachability* internetAvailable = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [internetAvailable currentReachabilityStatus];
    if (netStatus == NotReachable) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Network Unavialable" message:@"No network connection found. Network connectivity is required to view this content." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        return;
    }*/
    
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(450, 300, 212, 172)];
    webView.mediaPlaybackRequiresUserAction = NO;
    webView.opaque = NO;
    webView.backgroundColor = [UIColor blackColor];
    
    NSString* embedHTML = [NSString stringWithFormat:
                           @"<html><body style='background:#000;margin:0px;padding:0px;'>\
                           <script type='text/javascript' src='http://www.youtube.com/iframe_api'></script>\
                           <script type='text/javascript'>\
                           function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}\
                           function onPlayerReady(a){a.target.playVideo();}\
                           </script>\
                           <iframe id='playerId' type='text/html' width='212' height='172' src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>\
                           </body></html>", @"oHg5SJYRHA0"];
    
    [webView loadHTMLString:embedHTML baseURL:nil];
    [self.view addSubview:webView];
}

@end

Одна проблема - при встроенном ресайзе в фулскрин все работает, но ужасный лог: 

Подскажите, что означает лог и как его побороть.
Ответ:
вообще эти ошибки возникают между вызовами UIGraphicsBeginImageContextWithOptions и UIGraphicsEndImageContext
Если ты в программе нигде их не вызываешь, то вполне возможно что это просто баг iOS 7. Кстати в семерке был такой баг при тапе на обычный UITextField, сейчас его вроде бы уже исправили.
Ну вот что можно сделать:
- поставить символьный брекпоинт CGPostError и посмотреть где вываливается
- попробовать запустить в симуляторе 6.1 и проверить есть ли там такая же ошибка, если нет, то просто ждать фикса iOS 7
- ничего не делать )
Вопрос: Прогрузка и ленивая загрузка UIView перед доба...

Есть желание показать UIView c тяжелой картинкой. Я пытаюсь сделать такую загрузку, которая позволит остальной программке работать

Класс этой вью
Код

- (id)initWithSpinset:(NSString*)spinset withSize:(CGSize)size {
    self = [super initWithFrame:(CGRect){0, 0, size}];
    if (!self) return nil;
    
    self.clipsToBounds = YES;
    
    [NSThread detachNewThreadSelector:@selector(loadImage:) toTarget:self withObject:spinset];
    
    return self;
}

- (void)loadImage:(NSString*)spinset {
    NSString *filePath = [[NSBundle mainBundle] pathForResource:spinset ofType:nil];
    NSData *imageData = [[NSData alloc] initWithContentsOfFile:filePath];
    UIImage *spinsetImage = [[UIImage alloc] initWithData:imageData];
    if (!spinsetImage) return;
    
    _spinsetImageView = [[UIImageView alloc] initWithImage:spinsetImage];
    if (_spinsetImageViewPosition)
        _spinsetImageView.frame = CGRectOffset(_spinsetImageView.frame, 0, _spinsetImageViewPosition);
    [self addSubview:_spinsetImageView];
    
    self.isReady = YES;
}


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

Проблема в том, что isReady срабатывает очень быстро. Т.е. это не решает задачу предварительной прогрузки UIView. Подскажите где моя ошибка и как логично решать такую задачу.

Это сообщение отредактировал(а) Shklyar - 28.2.2014, 13:30
Ответ:
ну создание UI не может занимать много времени, может много времени занимает что-то другое? Например загрузка картинок или наполнение массивов
Вопрос: Swift: несовместимость кода двухлетней давности

Возможно, задаю ламерский вопрос, но в данной ситуации не вижу другого выхода.
Взял следующий код из примера датированного 19.12.2014
Objective-C
1
2
3
4
5
6
7
 override func viewDidLoad() {
     super.viewDidLoad()
     // Do any additional setup after loading the view, typically from a nib.
     let url = NSURL (string: "http://www.sourcefreeze.com");
     let requestObj = NSURLRequest(URL: url!);
     myWebView.loadRequest(requestObj);
  }
Все что я хочу сделать это загрузить URL в моем UIWebView. Но - код НЕ компилируется в нынешнем XCode(8.0). Компилятор ругается, типа "NSURL is not implicitly convertible to URL" и т.д.
Есть несколько вещей, которые я не могу понять принципиально:
1) Подобные заскоки уже не первый и не второй раз, я всего лишь тупо пытаюсь пройти уроки, выставленные в сети, и каждый раз проблемы с компиляцией кода, который работал два года назад. И каждый раз надо ползать по гуглу в поисках решений проблемы.
Apple пытается сделать разработчиков выносливыми или это мой личный глюк???
2) Если кто знает в чем секрет сабжа и может поделиться ЗНАНИЕМ, я лично буду очень благодарен.
Многие из форумчан могут намекнуть мне что неплохо было бы сначала разобраться в синтаксисе языка, но... большинство уроков опять же двухлетней давности, боюсь наступить на те же грабли.
Всем GR8 10X!!!
BTW: я ничего такого не курил...
Ответ: Понял, спасибо за подсказку
Если восьмерка загонит меня в тупик, то попробую перейти на более старую версию.