Если вы не укажете ограничение высоты для параметра UILabel
, оно примет высоту, которая соответствует всему тексту. Просто убедитесь, что количество строк установлено в 0 и что на вашей метке установлены все ограничения по границам.
Использование
[[NSURLCache sharedURLCache] removeAllCachedResponses];
ДО выполнения вызова или при загрузке контроллера представления, это статическая функция, которая удаляет все данные кэша для ответов. Только с использованием cachePolicy этого было недостаточно, я вижу, что uiwebview может обновлять HTML-документ, но не связанный документ, такой как CSS, JS или изображения.
Я пробую это решение, и оно работает.
if (lastReq){
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:lastReq];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
}
lastReq=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:localUrl]
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:10000];
[lastReq setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[self.mainWebView loadRequest:lastReq];
- Прежде всего, я удаляю кеш для последнего запроса и призываю удалить весь другой кеш (я думаю, что это не так важно) - Затем я создаю nsurlrequest и ignoringLocalCacheData - наконец, загрузите новый запрос
Я проверяю его, и он перезагружает все файлы (HTML, CSS, JS и изображения).
Я работаю с некоторыми дизайнерами, редактирующими файлы CSS, используемые некоторыми веб-представлениями в приложении. Они жаловались, что изменения в таблицах стилей не были отражены в приложении, и небольшая отладка с Чарльзом подтвердила, что они не были перезагружены. Я пытался, казалось бы, каждый ответ на StackOverflow, но безрезультатно.
То, что в конце концов уловило, было создание подкласса NSURLCache
, который переопределяет -cachedResponseForRequest:
- (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request
{
if ([[[[request URL] absoluteString] pathExtension] caseInsensitiveCompare:@"css"] == NSOrderedSame)
return nil;
else
return [super cachedResponseForRequest:request];
}
Я затем устанавливаю его с разумной памятью и емкостью диска:
NSURLCache *currentCache = [NSURLCache sharedURLCache];
NSString *cachePath = [cachesDirectory() stringByAppendingPathComponent:@"DebugCache"];
DebugURLCache *cache = [[DebugURLCache alloc] initWithMemoryCapacity:currentCache.memoryCapacity diskCapacity:currentCache.diskCapacity diskPath:cachePath];
[NSURLCache setSharedURLCache:cache];
[cache release];
(cachesDirectory()
- это функция, которая возвращает /Library/Caches
в каталоге приложения на iOS).
Как вы можете сказать по названию, я использую это только в конфигурации отладки (используя настройку сборки дополнительных флагов препроцессора и некоторые #ifdefs).
Используйте следующий код:
NSString *cacheDir=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
[[NSFileManager defaultManager]removeItemAtPath:cacheDir error:nil];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0];
[webView loadRequest:request];
(теперь с исправленной опечаткой)