小编Dal*_*zio的帖子

iOS SDK UIViewContentModeScaleAspectFit与UIViewContentModeScaleAspectFill

我有一个图像,我希望UITableViewCell使用UITableViewCellStyleSubtitle提供一个UIImageView和两行文本的样式,以及一个可选的附件视图显示.

但是,当我设置的内容模式UIImageView,以任一UIViewContentModeScaleAspectFit或者UIViewContentModeScaleAspectFill,它似乎没有什么区别.这两种内容模式都只显示整个图像,将文本向右移动以为图像腾出空间.

有没有人在实践中有任何实际差异的例子?文档说:

UIViewContentModeScaleAspectFit:
Scales the content to fit the size of the view by maintaining the aspect ratio. Any     remaining area of the view’s bounds is transparent.

UIViewContentModeScaleAspectFill:
Scales the content to fill the size of the view. Some portion of the content may be  clipped to fill the view’s bounds.
Run Code Online (Sandbox Code Playgroud)

但是这些内容模式似乎没有像宣传的那样表现.

编辑:我正在运行SDK iOS 4.

iphone objective-c uiimageview contentmode ios4

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

设置Android Gallery小部件以显示特定的起始图像

我有一个任务,用户可以从代表相册的GridView中选择一个图像,然后我开始一个新的活动,显示一个Gallery小部件来显示相册的图像.但是,我似乎无法让Gallery小部件以给定图像为起点显示相册的内容.理想情况下,我想要一个Gallery#setStartingImage(int position)或类似的东西.

任何想法将不胜感激.

android gallery android-widget

7
推荐指数
1
解决办法
4395
查看次数

具有全局持久存储的基于核心数据文档的应用程序

我有一个基于文档的核心数据应用程序,它按原样运行.我想添加对全局持久性存储的支持来保存项目库.

我已经阅读了大部分相关文档,并了解我应该在托管对象模型中使用配置.我已经定义了两个配置:"DocumentConfiguration"和"LibraryConfiguration".文档配置中的实体仅在文档配置中,库配置中的实体仅在库配置中 - 即,没有重叠.

然后,文档会说"然后在创建协调器时使用此模型".但是我实际上并没有创建自己的持久存储协调器,因为我使用的是默认的NSPersistentDocument协调器.

关于如何最好地进行并帮助消除我可能遇到的任何误解的几个问题:

A.我是否会在NSPersistentDocument中获取NSPersistentStoreCoordinator,然后按以下方式添加新的持久性存储:

NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType 
    configuration:@"LibraryConfiguration" 
    URL:url 
    options:nil 
    error:&error];
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一个问题,因为我没有在NSPersistentDocument的持久性存储协调器中提供其他配置定义("DocumentConfiguration"),因为我使用的是NSPersistentDocument提供的默认值.我猜它在保存文档的时候可能会使用nil.如果是这样,这会是一个问题吗?即,如果没有为所有持久性存储(在这种情况下为两个)定义相同的配置,协调器将如何知道哪个持久存储保存具有给定配置定义的实体?我能够在创建/保存之前设置NSPersistentDocument持久性存储的配置(到"Doc​​umentConfiguration")吗?来自NSPersistentDocument文档:

保存新文档会添加具有所选URL的默认类型的存储,并在上下文中调用save:.对于现有文档,save只在上下文中调用save :.

B.创建我自己的NSPersistentStoreCoordinator和NSManagedObjectContext实例,添加定义了配置的两个持久存储,然后使NSPersistentDocument使用这些NSPersistentStoreCoordinator和NSManagedObjectContext实例并释放旧实例会更好吗?如果是这样,我如何为addPersistentStoreWithType:...方法指定NSPersistentDocument的url?只有在保存无标题文档后,才会知道此URL.(测试一下,在第一次保存文档之前,似乎没有任何临时持久性存储(通过持久性存储协调器上的方法persistentStores).

C.或者最好不要单独留下NSPersistentDocument,并创建我自己的NSPersistentStoreCoordinator实例,我专门用于持久库存储和托管库对象模型?文档说NSPersistentStoreCoordinator的多个实例应该在多线程Core Data应用程序中使用,但我不需要多线程Core Data支持.是否需要有两个NSPersistentStoreCoordinator实例 - 一个用于库,一个用于文档(直觉说这不是必需的,可能不是正确的方法)?

有什么建议?

cocoa core-data objective-c document-based

5
推荐指数
1
解决办法
1291
查看次数

奇怪的NSCache驱逐行为

我一直在使用NSCache来存储因性能原因而应该缓存的项目,因为重新创建它们相当昂贵.理解NSCache行为让我有些头疼.

我按如下方式初始化我的NSCache:

   _cellCache = [[NSCache alloc] init];
   [_cellCache setDelegate:self];
   [_cellCache setEvictsObjectsWithDiscardedContent:NO];   // never evict cells
Run Code Online (Sandbox Code Playgroud)

缓存中保存的对象实现NSDiscardableContent协议.现在我的问题是NSCache类似乎在几个实例中没有正常工作.

1)首先是较小的问题.NSCache的setCountLimit:声明:

将计数限制设置为小于或等于0的数字将不会影响缓存的最大大小.

有人能说清楚这意味着什么吗?即,NSCache是​​最大的,并且只有在别处需要内存时才会发出discardContentIfPossible消息?或者NSCache是​​最小的,它会立即发出discardContentIfPossible消息?

前者更有意义,但测试似乎表明后者正在发生的事情.如果我登录来电来discardContentIfPossible在我的缓存对象的方法,我看到它被称为几乎立即-后只有2-3十几个项目已被添加到缓存(每个不到0.5 MB).

好的.所以我尝试设置一个大的计数限制 - 比我需要的更多 - 通过添加以下行:

   [_cellCache setCountLimit:10000000];
Run Code Online (Sandbox Code Playgroud)

然后几乎不会立即发送discardContentIfPossible消息.我必须将更多内容加载到缓存中并在这些消息开始发生之前使用它一段时间,这更有意义.

那么这里的预期行为是什么?

2)更大的问题.文件说明:

默认情况下,如果丢弃其内容,则会自动从缓存中删除缓存中的NSDiscardableContent对象,但可以更改此自动删除策略.如果将NSDiscardableContent对象放入缓存中,则缓存在删除时会调用discardContentIfPossible.

所以我将驱逐政策设置为NO(如上所述),因此对象永远不会被驱逐.相反,当调用discardContentIfPossible时,我会根据特殊条件清除并释放缓存对象的内部数据.也就是说,我可能决定在某些情况下不会实际清除和丢弃数据(例如,如果该项目最近已被使用过).在这种情况下,我只是从discardContentIfPossible方法返回而没有丢弃任何东西.这个想法是,最近没有使用的其他一些对象会在某个时刻获得消息,而它可以丢弃它的内容.

现在,有趣的是,所有这些似乎都适用于大量使用.加载大量内容,放置和访问缓存中的对象等.经过一段时间,当我尝试访问NSCache中的任意对象时,它实际上并不存在!不知何故,它似​​乎已被删除 - 即使我专门将驱逐政策设置为NO.

好的.因此实现委托方法cache:willEvictObject:表明它永远不会被调用.这意味着该对象实际上并没有被逐出.但它神秘地从NSCache消失,因为它不能在未来的查询中找到-或以某种方式将其用是不再映射到原来的对象相关联的密钥.但这怎么可能发生呢?

顺便说一句,我与我的值对象(CALayer)关联的关键对象是NSURL容器/包装器,因为我不能直接使用NSURL,因为NSCache不复制密钥 - 只保留它们,以及后来的NSURL密钥用于查找可能不是最初用于加载具有该对象的缓存的确切原始对象(仅相同的URL字符串).使用NSURL包装器/容器,我可以确保它是用于将原始值对象添加到NSCache的确切原始密钥对象.

任何人都可以对此有所了解吗?

memory cocoa caching objective-c

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