小编Nic*_*ick的帖子

模态未设置的UINavigationBar外观

我在appDelegate中使用以下代码在我的应用程序中设置我的UINavigationBar和状态栏的外观:

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)

此代码正确地将所有内容的外观设置为白色,除非阻止第三方模式viewController,例如来自Dropbox API或来自UIActivityViewController的Mail/Message viewController.我已经包含了一些屏幕截图来展示它们的外观.

UIActivityViewController邮件: UIActivityViewController邮件

UIActivityViewController消息: UIActivityViewController消息

Dropbox API: Dropbox API

我试过把它放进去

[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
Run Code Online (Sandbox Code Playgroud)

以及

[[UINavigationBar appearanceWhenContainedIn:[UIActivityViewController class], nil] setTintColor:[UIColor whiteColor]];
Run Code Online (Sandbox Code Playgroud)

而且没有人在工作.

uinavigationbar ios uiappearance uiactivityviewcontroller

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

使用UIImage的UICollectionView滚动性能很差

我的应用程序中有一个UICollectionView,每个单元格都是UIImageView和一些文本标签.问题是当我让UIImageViews显示他们的图像时,滚动性能很糟糕.它远不如UITableView的滚动体验,甚至没有UIImageView的相同UICollectionView.

我几个月前发现了这个问题,似乎找到了答案,但它是用RubyMotion编写的,我不明白.我试着看看如何将它转换为Xcode,但由于我从未使用过NSCache,所以有点难.海报上有还指出了这里关于实施,除了他们的解决方案的东西,但我不知道在哪里把这些代码要么.可能是因为我不理解第一个问题的代码.

有人能帮助将其翻译成Xcode吗?

def viewDidLoad
  ...
  @images_cache = NSCache.alloc.init
  @image_loading_queue = NSOperationQueue.alloc.init
  @image_loading_queue.maxConcurrentOperationCount = 3
  ...
end

def collectionView(collection_view, cellForItemAtIndexPath: index_path)
  cell = collection_view.dequeueReusableCellWithReuseIdentifier(CELL_IDENTIFIER, forIndexPath: index_path)
  image_path = @image_paths[index_path.row]

  if cached_image = @images_cache.objectForKey(image_path)
    cell.image = cached_image
  else
    @operation = NSBlockOperation.blockOperationWithBlock lambda {
      @image = UIImage.imageWithContentsOfFile(image_path)
      Dispatch::Queue.main.async do
        return unless collectionView.indexPathsForVisibleItems.containsObject(index_path)
        @images_cache.setObject(@image, forKey: image_path)
        cell = collectionView.cellForItemAtIndexPath(index_path)
        cell.image = @image
      end
    }
    @image_loading_queue.addOperation(@operation)
  end
end
Run Code Online (Sandbox Code Playgroud)

以下是第一个问题的提问者解决问题的第二个问题的代码:

UIImage *productImage = [[UIImage alloc] …
Run Code Online (Sandbox Code Playgroud)

performance objective-c rubymotion uicollectionview uicollectionviewcell

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

Peek&Pop - Pop在UICollectionView中导致错误的单元格

我有一个嵌入在UINavigationController中的UITableViewController,我正在尝试将Peek&Pop实现到TableView中.我有"偷看"部分完美地工作,但当我尝试"弹出"到下一个ViewController时,我正在"偷看"的单元格和下一个单元格都显示出来.我正在"弹出"到UICollectionView中,正如我所提到的,"peek"一半显示正确的单元格,但"pop"却没有.这个问题只发生在我使用[self.navigationController showViewController:viewControllerToCommit sender:nil];[self.navigationController pushViewController:viewControllerToCommit animated:YES];执行"pop"时.

这是显示正确细胞的"Peek" 窥视显示正确的细胞

并且"Pop"显示错误的单元格
Pop显示错误的单元格

我尝试使用[self presentViewController:viewControllerToCommit animated:YES completion:nil];并显示正确的单元格,除了这不会给我我需要的导航元素,所以我不能使用它(除非有办法让所有的导航元素回来).

我最初的想法是,我的应用程序如何计算CollectionViewCell的大小有问题.这是我正在使用的代码,虽然看起来它可以正常使用Peek&Pop以外的所有内容.

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    CGSize collectionViewBounds = collectionView.bounds.size;

    int navigationHeight = self.navigationController.navigationBar.bounds.size.height;
    int toolbarHeight = self.navigationController.toolbar.bounds.size.height;
    int statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;

    int cellHeight = collectionViewBounds.height - (navigationHeight + statusBarHeight + toolbarHeight);
    int cellWidth = collectionViewBounds.width;

    return CGSizeMake(cellWidth, cellHeight);
}
Run Code Online (Sandbox Code Playgroud)

为了增加我的困惑,当"TableView"中的第一个或最后一个项目被"偷看"时,"pop"将完美地运行.任何有关这方面的帮助将不胜感激.

iphone objective-c uinavigationcontroller uicollectionview 3dtouch

6
推荐指数
1
解决办法
392
查看次数

核心数据 - 创建 NSFetchedResultsController 时运行时崩溃

我使用的 TableViewController 类与您在 Xcode 中启动新的 Master-Detail Application 项目时创建的类非常相似。因此,我使用的是在 TableViewController 类中预先填充的相同代码供我自己使用。但是,我遇到了运行时崩溃,我不知道为什么。我在我的应用程序的另一类中使用了这个确切的代码,它运行良好。

- (NSFetchedResultsController *)fetchedResultsController
{
    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    // Edit the entity name as appropriate.
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Binder" inManagedObjectContext:[appDelegate managedObjectContext]];
    [fetchRequest setEntity:entity];

    // Edit the sort key as appropriate.
    //NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
    //NSArray *sortDescriptors = @[sortDescriptor];

    //[fetchRequest setSortDescriptors:sortDescriptors];

    // Edit the section name key path and cache name if appropriate.
    // nil for section …
Run Code Online (Sandbox Code Playgroud)

runtime-error core-data objective-c nsfetchedresultscontroller ios

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