我有一个图像的URL(从UIImagePickerController获取)但我不再拥有内存中的图像(该URL是从以前的应用程序运行中保存的).我可以再次从URL重新加载UIImage吗?
我看到UIImage有一个imageWithContentsOfFile:但我有一个URL.我可以使用NSData的dataWithContentsOfURL:来读取URL吗?
根据@ Daniel的回答,我尝试了以下代码,但它不起作用......
NSLog(@"%s %@", __PRETTY_FUNCTION__, photoURL);
if (photoURL) {
NSURL* aURL = [NSURL URLWithString:photoURL];
NSData* data = [[NSData alloc] initWithContentsOfURL:aURL];
self.photoImage = [UIImage imageWithData:data];
[data release];
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时控制台显示:
-[PhotoBox willMoveToWindow:] file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG
*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0'
Run Code Online (Sandbox Code Playgroud)
查看调用堆栈,我调用URLWithString,调用URLWithString:relativeToURL:,然后是initWithString:relativeToURL:,然后是_CFStringIsLegalURLString,然后是CFStringGetLength,然后是forwarding_prep_0,然后转发,然后调用 - [NSObject doesNotRecognizeSelector].
我的NSString(photoURL的地址是0x536fbe0)没有响应长度的任何想法?为什么它说它没有响应 - [NSURL长度]?难道不知道param是NSString,而不是NSURL吗?
好的,代码的唯一问题是字符串到URL的转换.如果我硬编码字符串,其他一切工作正常.所以我的NSString有问题,如果我无法弄清楚,我想这应该是一个不同的问题.插入此行(我从上面的控制台日志粘贴路径),它工作正常:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";
Run Code Online (Sandbox Code Playgroud) 有没有办法找出哪个UITableViewCell
位于滚动窗口的顶部?
我想获取当前滚动位置,以便我可以在应用程序退出时保存它.当应用程序启动时,我想滚动到它上次退出时的位置.
我需要知道两个NSDate实例是否都来自同一天.
有没有比获得NSDateComponents和比较日/月/年更容易/更好的方法呢?
随着iOS4即将推出,我已经计划在我的应用程序的未来更新中包含iAd.我认为这将使我的应用程序无法用于固件低于4.0的任何人.有没有办法根据用户的固件更改变量和.xib文件?干杯.
我以为我最近在SO上看到了回答这个问题,但现在我找不到了.这是我现在使用的代码,用于确定设置是否为24小时时间显示.它适用于我在美国,但我不知道它是否适用于所有语言环境.这是否足够或是否有更好的方法来找出当前的设置?
+(BOOL) use24HourClock
{
BOOL using24HourClock = NO;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale: [NSLocale currentLocale]];
[dateFormatter setDateStyle:kCFDateFormatterNoStyle];
[dateFormatter setTimeStyle:kCFDateFormatterShortStyle];
// get date/time (1Jan2001 0000UTC)
NSDate* midnight = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:0];
NSString* dateString = [dateFormatter stringFromDate: midnight];
// dateString will either be "15:00" or "16:00" (depending on DST) or
// it will be "4:00 PM" or "3:00 PM" (depending on DST)
using24HourClock = ([dateString length] == 5);
[midnight release];
[dateFormatter release];
return using24HourClock;
}
Run Code Online (Sandbox Code Playgroud) 我的UITableView中有大约50个自定义单元格.我想在单元格中显示图像和标签,我从URL中获取图像.
我想做一个懒惰的图像加载,以便在加载图像时UI不会冻结.我尝试在单独的线程中获取图像,但每次单元格再次可见时我必须加载每个图像(否则重复使用单元格会显示旧图像)
Facebook等应用仅为当前可见的单元格加载图像,一旦加载图像,它们就不会再次加载.有人可以告诉我如何复制此行为.
谢谢.
编辑
尝试在NSMutableDictionary对象中缓存图像会在用户快速滚动时产生问题.我只在滚动完全停止并清除内存警告缓存时才获取图像.但应用程序总是会收到内存警告(由于缓存图像的大小)并在重新加载之前清除缓存.如果滚动非常快,它会崩溃.
欢迎任何其他建议
当模态呈现或推送接口控制器时,我们可以指定context
参数以将一些数据传递给新控制器,如下所示.
// Push
[self pushControllerWithName:@"MyController" context:[NSDictionary dictionaryWithObjectsAndKeys:someObject, @"someKey", ..., nil]];
// Modal
[self presentControllerWithName:@"MyController" context:[NSDictionary dictionaryWithObjectsAndKeys:someObject, @"someKey", ..., nil]];
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们怎么能这样做呢?
假设我们以模态方式呈现一个控制器,以便用户从列表中选择一个项目,然后我们返回主控制器,我们如何获取已被选中的项目?
众所周知,如果iOS应用程序正在运行前台,那么应用程序将不会在删除通知到来时通知用户.现在在我的应用程序中,我想显示警告以通知用户远程通知到来.如何判断应用程序是运行前台还是后台?我找到了docs并搜索了stackoverflow.com,却找不到任何相关内容.谢谢.
我是iPhone技术的新手.我在iPhone应用程序中保存了一个问题,但是当我使用textfield键盘类型数字键盘时,键盘没有显示返回/完成按钮.
在文本字段中输入数字后如何隐藏数字键盘键盘?你有什么解决方案吗?请提供帮助.
我正在尝试使用UISegmentedControl,但无法计算段的宽度.该控件使得段的宽度相同,对于某些标题不起作用,如下所示:
http://morrisphotoart.com/tmp/Screenshot2011-07-13_21.17.33.png
如果我知道哪种字体并调用setWidth:forSegmentAtIndex:方法,我可以编写代码来计算段宽度,但是如何获得字体呢?或者还有另一种方式吗?
左侧和中间段的标题不固定,因此我无法对宽度进行硬编码.
iphone ×7
ios ×5
cocoa-touch ×2
objective-c ×2
uitableview ×2
apple-watch ×1
datetime ×1
foreground ×1
image ×1
ios-4.2 ×1
ios4 ×1
lazy-loading ×1
localization ×1
macos ×1
uifont ×1
uiimage ×1
uiscrollview ×1
watchkit ×1