小编Alo*_*ver的帖子

适用于App Store等UITableView的范围栏?

有谁知道如何添加范围栏UITableView?App Store应用程序有时会执行此操作,如下图所示.

我想使用此范围栏为其中的元素添加排序选项UITableView.这比使用带有工具栏的工具栏更方便UISegmentControl.

我只是不知道如何实现这一点.我甚至不知道元素的名称(我称之为范围栏,因为它看起来就像a的范围栏UISearchBar,但事实并非如此).

图像显示我想要的东西

uitableview uisegmentedcontrol uisearchbar ios

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

NSURLSessionDataTask超时后续请求失败

我正在创建一个NSMutableRequest:

self.req = [NSMutableURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0];
Run Code Online (Sandbox Code Playgroud)

超时设置为10秒,因为我不希望用户等待太长时间来获得反馈.之后我创建了一个NSURLSessionDataTask:

NSURLSessionDataTask *task = [self.session dataTaskWithRequest:self.req completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSHTTPURLResponse * httpResp = (NSHTTPURLResponse *)response;
    if (error) {
        // this is where I get the timeout
    } 
    else if (httpResp.statusCode < 200 || httpResp.statusCode >= 300) {
        // handling error and giving feedback
    } 
    else {
        NSError *serializationError = nil;
        NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&serializationError];
    }
    [task resume];
}
Run Code Online (Sandbox Code Playgroud)

问题是服务器进入Gateway Timeout并且需要花费很多时间.我收到超时错误并向用户提供反馈,但由于超时错误,以下所有API调用都以相同方式失败.阻止它的唯一方法是杀死应用程序并重新开始.在超时错误后,我应该做些什么来终止任务或连接?如果我没有设置超时并且我等到从服务器收到错误代码,则以下所有调用都能正常工作(但是用户会等待很多!).

我试图取消任务:

NSURLSessionDataTask …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutableurlrequest ios nsurlsessiondatatask

11
推荐指数
1
解决办法
2376
查看次数

UISearchDisplayController没有调光?

我正在编写一个SplitView iPad应用程序.在DetailViewController中,有一个包含a UITableView和a UISearchBar及其控制器的小视图.此视图不代表为DetailViewController保留的整个屏幕空间.实际上,它只使用了一半.这里有一个UIImageView对另一半.

这就是麻烦的来源:每次我使用搜索栏时,displaycontroller(我都认为)会使DetailViewController中的所有内容变暗,包括图像视图.这与人们在运行应用程序时的期望不一致.有没有办法将框架设置为暗灰色?或者至少禁用调光效果好?

提前致谢.

ipad ios

8
推荐指数
1
解决办法
6044
查看次数

如何让UISearchBar范围栏始终可见?

这是我最新的iPhone SDK问题.

我有一个UISearchBar和它的代表都设置好了.另外,当我加载我的视图时,我会打电话

self.searchDisplayController.searchBar.showsScopeBar = YES;
Run Code Online (Sandbox Code Playgroud)

这样,当我的视图首次出现时,我会看到范围栏,如预期的那样.但是如果触摸搜索栏内部然后触摸它(或者即使执行搜索然后取消它),范围栏也会再次隐藏.

所以我的问题是:是否可以让范围栏始终可见?即使在进行搜索之后?

非常感谢.

iphone ios4

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

iOS AVCaptureVideoDataOutput 消耗太多内存

我正在使用AVFoundation框架用iPhone相机捕获视频,我的代码:

 self.session = [[AVCaptureSession alloc] init];
 ...
 self.output = [[AVCaptureVideoDataOutput alloc] init];
 [self.session addOutput:self.output];
Run Code Online (Sandbox Code Playgroud)

之前[session addOutput]一切顺利,内存限制为3M,但是之后[session addOutput],内存使用量每秒增加0.06M,几分钟后,应用程序会因为内存警告而崩溃。AVCaptureVideoDataOutput似乎消耗了太多内存,并且可能存在内存泄漏问题。

那么我怎样才能减少内存使用呢?

iOS版本:7.1.1

memory avfoundation ios avcapturesession

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

动画调整UIWebView的大小

我很难设法调整a的大小UIWebView,并且不知道还能去哪里.

这就是我想要完成的事情:我有两个视图,一个在另一个之上(想象两个正方形,一个在另一个的顶部).顶视图是a UIWebView,底部视图将被称为一般UIView(我对底部视图没有任何问题).每次加载新内容时我都会调整两个视图.我还有一个按钮,应该隐藏底部视图或显示它,具体取决于它以前的状态.

这就是问题出现的地方.当隐藏底部视图时,按下按钮会放大框架并缩小UIWebView框架.没关系.但是如果显示底部视图并按下按钮,UIWebView框架将变大,并且存在一些问题:

  • 如果它UIWebView一直滚动到底部,它会在下降之前"跳跃"一点(变大);

  • 如果它UIWebView一直滚动到顶部,只要有足够的内容在底部视图后滚动,它就会按预期下降.

一般来说,我学到的是,如果底部视图后面的内容比调整大小的数量更大,则不会发生跳跃.否则就是这样.

我做了很多研究,问过前一个问题,所以我假设这是延迟加载的结果UIWebView.发生这种"跳跃",以便自动调整大小(显示所有内容,即使其中一些内容在屏幕外),然后向下移动.否则,它将同时扩展和加载新内容,需要更多的处理器能力.

我已经尝试了框架,边界和中心,到目前为止还没有任何进展.我的假设是否正确?有没有简单的方法来调整大小调整大小以UIWebView使其仅向下(当变大时)并保持底部滚动?

从理论上讲,我认为正确的方法是将UIWebView较大的位置设置为顶部,保持其当前的最低位置,然后将其降低动画.这样,顶部内容就已经加载了.但我没有取得任何成功.

如果有人对此有任何经验,请分享.非常感谢.

iphone ipod-touch uiwebview ios

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

为iOS SpriteKit游戏播放马达音效... AVAudioPlayer vs SKAction vs?

我正在开发一款驾驶游戏,SpriteKit并且在发动机声音效果方面遇到了麻烦.

我想要两种不同的发动机声音.一个用于按下油门按钮,另一个用于未按下油门按钮的按钮.在游戏开始时,两种声音中的一种将持续播放.

什么是最好的方法?我的声音文件是否应该非常短(0.10秒或更短)并且循环还是应该相当长并且只是打开和关闭?我应该SKAction用来播放声音AVAudioPlayer还是别的什么?我尝试过使用AVAudioPlayer但每次暂停和播放播放器(打开或关闭油门)时,游戏的帧速率会暂时下降.任何帮助表示赞赏!

audio avaudioplayer ios sprite-kit skaction

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

UIViewController中的UIsearchController使用自动布局

任何人都已经成功实施UIViewController该contais既有UISearchController searchBarUItableView在使用自动布局铺设东西展现出来?

我正在努力实现类似于1Password在iPhone上所做的事情:固定searchBar在一个tableView(不是它的一部分)之上tableHeaderView.当UISearchController拥有searchBar激活时,它的searchBar动画显示范围按钮,从而tableView向下移动一点.

我已经使用此类正确使用此布局的基础知识:

//
//  ViewController.m
//  UISearchControllerIssues
//
//  Created by Aloha Silver on 05/02/16.
//  Copyright © 2016 ABC. All rights reserved.
//

#import "ViewController.h"

@interface ViewController () <UISearchResultsUpdating, UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) UISearchController *searchController;

@property (nonatomic, strong) UITableView *tableView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self setupTableView];
    [self setupSearchInterface];
    [self setupConstraints]; …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview uisearchbar ios uisearchcontroller

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

轻松/高效地检查/删除SKScene sprite儿童?

使用SpriteKit处理iOS游戏.我的背景由地图图块组成(本质上是一个无限的图,程序生成).

我们的系统旨在管理地图的"块",我们只在播放器附近加载块.由于SpriteKit需要我们添加SKSpriteNodes,我们不再对不再靠近播放器的块/块的"卸载"精灵进行干净控制.

我意识到SpriteKit实际上不会在屏幕外渲染事物,但是如果我们无法移除不再需要的精灵,或者检查是否已经添加了块/块,它将会破坏性能.

既然SKNodes没有回应isEqual:,我只看到两种方法:

  • 为每个sprite命名一个带有chunk/tile坐标的名称,并在每次更新时检查此名称
  • 维护一个单独的加载图块数组并检查它

如果已添加精灵,有没有更简单的检查/删除方法?也许精灵名称上的部分字符串匹配?

我不确定使用SpriteKit是最好的解决方案(Xcode模拟器似乎以30fps的速度拖动,尚未在真实设备上进行测试).我们最初用Java构建这个游戏,我们正在渲染我们自己的纹理 - 因此只能加载并可以手动输入到opengl中.

-(void) renderToScene:(SKScene *)scene {

    for( Chunk *chunk in loadedChunks ){
        for( Tile *tile in [chunk getTiles] ){

            SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithTexture:tileTexture];
            sprite.name = @"Tile";
            sprite.position = CGPointMake(realX,realY);
            [scene addChild:sprite];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios sprite-kit

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

heightForRowAtIndexPath只有一个部分?

这是我现在面临的问题:

我有很多UITableViews,每个都有两个部分(根据需要,任何时候只显示一个).第一部分有3个单元格,可能需要调整大小.因此,我正在使用heightForRowAtIndexPath.

第二部分最多可以有3.000个单元格,全部使用默认高度44点.

我的heightForRowAtIndexPath确定它是处理来自第1部分还是第2部分的单元格,然后是度量(第1部分)还是立即返回默认值(第2部分).

通过使用此方法,大型表视图需要一段时间才能显示,因为在这种情况下(大于约1.000个单元格),heightForRowAtIndexPath是性能问题.

我的问题是:有没有办法只调整第一部分中提出的3个单元格?任何方式可能强制只为indexPath.section == 0调用heightForRowAtIndexPath?

如果它有任何区别,我正在使用分组表视图.

谢谢.

iphone uitableview

0
推荐指数
1
解决办法
2521
查看次数