小编pro*_*rmr的帖子

我可以从URL加载UIImage吗?

我有一个图像的URL(从UIImagePickerController获取)但我不再拥有内存中的图像(该URL是从以前的应用程序运行中保存的).我可以再次从URL重新加载UIImage吗?

我看到UIImage有一个imageWithContentsOfFile:但我有一个URL.我可以使用NSData的dataWithContentsOfURL:来读取URL吗?

EDIT1


根据@ 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吗?

EDIT2


好的,代码的唯一问题是字符串到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)

iphone uiimagepickercontroller uiimage ios

131
推荐指数
6
解决办法
16万
查看次数

如何获取UITableView滚动位置以便保存?

有没有办法找出哪个UITableViewCell位于滚动窗口的顶部?

我想获取当前滚动位置,以便我可以在应用程序退出时保存它.当应用程序启动时,我想滚动到它上次退出时的位置.

iphone objective-c uitableview uiscrollview

71
推荐指数
2
解决办法
7万
查看次数

Cocoa-Touch:我如何看待两个NSD在同一天?

我需要知道两个NSDate实例是否都来自同一天.

有没有比获得NSDateComponents和比较日/月/年更容易/更好的方法呢?

macos cocoa-touch objective-c ios

67
推荐指数
7
解决办法
2万
查看次数

如何使iPhone App与多个SDK(固件)版本兼容

随着iOS4即将推出,我已经计划在我的应用程序的未来更新中包含iAd.我认为这将使我的应用程序无法用于固件低于4.0的任何人.有没有办法根据用户的固件更改变量和.xib文件?干杯.

iphone compatibility iphone-sdk-3.0 ios4

60
推荐指数
1
解决办法
1万
查看次数

如何确定iPhone是否设置为12小时或24小时时间显示?

我以为我最近在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)

iphone datetime localization

41
推荐指数
3
解决办法
1万
查看次数

在UITableViewCell中加载延迟图像

我的UITableView中有大约50个自定义单元格.我想在单元格中显示图像和标签,我从URL中获取图像.

我想做一个懒惰的图像加载,以便在加载图像时UI不会冻结.我尝试在单独的线程中获取图像,但每次单元格再次可见时我必须加载每个图像(否则重复使用单元格会显示旧图像)

Facebook等应用仅为当前可见的单元格加载图像,一旦加载图像,它们就不会再次加载.有人可以告诉我如何复制此行为.

谢谢.

编辑
尝试在NSMutableDictionary对象中缓存图像会在用户快速滚动时产生问题.我只在滚动完全停止并清除内存警告缓存时才获取图像.但应用程序总是会收到内存警告(由于缓存图像的大小)并在重新加载之前清除缓存.如果滚动非常快,它会崩溃.

欢迎任何其他建议

iphone cocoa-touch lazy-loading image uitableview

33
推荐指数
1
解决办法
4万
查看次数

从WatchKit中的模态视图传回数据

当模态呈现或推送接口控制器时,我们可以指定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 apple-watch watchkit

30
推荐指数
2
解决办法
1万
查看次数

iOS如何判断应用程序是运行前台还是后台?

众所周知,如果iOS应用程序正在运行前台,那么应用程序将不会在删除通知到来时通知用户.现在在我的应用程序中,我想显示警告以通知用户远程通知到来.如何判断应用程序是运行前台还是后台?我找到了docs并搜索了stackoverflow.com,却找不到任何相关内容.谢谢.

foreground ios

27
推荐指数
2
解决办法
2万
查看次数

数字键盘键盘在iPhone中不显示返回键

我是iPhone技术的新手.我在iPhone应用程序中保存了一个问题,但是当我使用textfield键盘类型数字键盘时,键盘没有显示返回/完成按钮.

在文本字段中输入数字后如何隐藏数字键盘键盘?你有什么解决方案吗?请提供帮助.

iphone ios-4.2

11
推荐指数
2
解决办法
2万
查看次数

如何计算UISegmentedControl段的正确宽度?

我正在尝试使用UISegmentedControl,但无法计算段的宽度.该控件使得段的宽度相同,对于某些标题不起作用,如下所示:

http://morrisphotoart.com/tmp/Scr​​eenshot2011-07-13_21.17.33.png

如果我知道哪种字体并调用setWidth:forSegmentAtIndex:方法,我可以编写代码来计算段宽度,但是如何获得字体呢?或者还有另一种方式吗?

左侧和中间段的标题不固定,因此我无法对宽度进行硬编码.

iphone uisegmentedcontrol uifont ios

10
推荐指数
3
解决办法
1万
查看次数