小编Eya*_*yal的帖子

如何用动画切换视图 - 目标c

我有一个viewController,它有一个tableView和一个mapView,只有一个是可见的.我还有一个带有分段控件的工具栏,带有两个按钮(列表和地图)

如何在表格视图和地图视图之间切换?并且重要的是工具栏将保持锁定而不用视图制作动画.

iphone objective-c uiview uianimation uiviewanimationtransition

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

目标c - 参考计数

直到五分钟我才确定我对Objective c引用计数的理解非常好,但是当我开始检查对象retainCount时,我很惊讶地看到我所看到的.

例如,myViewController有一个UITableview:

.h文件

@interface RegularChatViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
     UITableView *_tableView;
}
@property (nonatomic, retain) IBOutlet UITableView *tableView; 
Run Code Online (Sandbox Code Playgroud)

.m文件

@synthesize tableView = _tableView;

- (void)loadView
{
    _tableView = [[UITableView alloc] init];  // STEP ONE
    NSLog(@"tableView retain count: %d",[_tableView retainCount]);

    self.tableView.frame = CGRectMake(0, 0, 320, tableHeight); // STEP TWO
    NSLog(@"tableView retain count: %d",[_tableView retainCount]);  

    [self.view addSubview:self.tableView]; // STEP THREE
    NSLog(@"tableView retain count: %d",[_tableView retainCount]); 
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,输入是:

tableView retain count: 1
tableView retain count: 2
tableView retain count: 3
Run Code Online (Sandbox Code Playgroud)

显然,STEP …

iphone reference-counting objective-c ios retaincount

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

使用AFNetworking发送多个图像

我正在开发一个消息传递应用程序,用户也可以相互发送图片.
当用户发送多张图片时,我会并行发送它们(我发送第二张图片之前,我不等待第一张图片完成上传)

在移动到AFNetworkingI 之前,我成功完成了这项工作ASIFormDataRequest,实际上,如果我发送了2张图像,它们都会并行传输并成功传送给其他用户.

当我尝试使用AFNetworking进行此操作时,我会遇到一些奇怪的行为.
我将尝试描述user1发送两个图像的情况user2:

  1. User1发送image1 - >一切看起来都不错,我可以看到上传进度.
  2. User1然后发送image2 - >看起来还不错,我可以看到两个图像的上传进度
  3. image1上传完成 - > user2获取一个看起来像image1和image2的组合的损坏图像!
  4. image2上传完成 - > user2成功获取image2

这是我发送图像的方式

- (void)sendImageMsgWithPath:(NSString *)path
                       image:(UIImage *)image
                     success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                     failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
                    progress:(void (^)(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
{
    NSData *imageData = UIImageJPEGRepresentation(image, 0.5);

    // create the request

    NSURLRequest *request = [[AppClient sharedClient] multipartFormRequestWithMethod:@"POST" path:path parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
                             {
                                 [formData appendPartWithFileData:imageData name:@"image_name" fileName:@"image_name.jpg" mimeType:@"image/jpeg"];
                             }];


    // create the operation …
Run Code Online (Sandbox Code Playgroud)

iphone multipartform-data objective-c ios afnetworking

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

目标c - 如何使用JS自动播放Vimeo视频

每个试图让Youtube/Vimeo视频在iOS上自动播放的人都知道这可能是一项痛苦的任务.Apple出于正确的原因阻止了'autoplay'参数,但有时您仍然需要使此功能正常工作.

我有同样的问题,自动播放youtube视频,显然,要让自动播放工作,你需要做一些javascript魔术,听取播放器的'onReady'事件,而不是当播放器加载并准备播放你打电话' player.play()'在没有任何其他用户干预的情况下启动它.

Vimeo也有一些javascript API,我很确定你可以用它做自动播放技巧,我只是无法弄清楚如何使用它.

他们有JS迷你库Froogaloop,让事情变得更容易,我看到@ila的这个答案与下面的html字符串一起使用它:

NSString *htmlString = [NSString stringWithFormat:
                                                @"<html><head>"
                                                "<script src=\"froogaloop.js\"></script>"
                                                " <script>"
                                                    "function ready()"
                                                        "{$f(document.getElementById(\"player\")).api(\"play\");}"
                                                    "function func1() "
                                                        "{$f(document.getElementById(\"player\")).addEvent(\"ready\", ready);}"
                                                    "window.onload=func1;"
                                                "</script></head><body>"
                                                       "<iframe id=\"player\" src=\"http://player.vimeo.com/video/39287488?api=1&amp;player_id=player\" width=\"315\" height=\"455\" frameborder=\"0\" webkit-playsinline>"
                                               " </iframe></body></html>"];    

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"webview loaded");
    NSString *path = [[NSBundle mainBundle] pathForResource:@"froogaloop" ofType:@"js"];
    NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [webView stringByEvaluatingJavaScriptFromString:jsCode];
}
Run Code Online (Sandbox Code Playgroud)

但这对我来说不起作用,在向这段代码添加警报之后,我可以看到func1()调用并执行'addEvent'行,但是它接缝处理的ready()方法永远不会被调用,因为'ready'事件从未触发过(?) ...

有任何想法吗?

javascript iphone objective-c vimeo ios

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

AVPlayer - 播放时切换流质量

我正在AVPlayer玩youtube视频,对于每个youtube视频ID,我检索了几个不同质量的流网址.

我想根据网络状态播放特定的流质量.例如,如果用户在3G上,我想播放质量最低的URL,但如果用户移动到wifi,我想无缝切换到质量更好的流.

这不是什么新鲜事,youtube正在他们的应用程序和许多其他人这样做.

所以我想知道进行这种切换的最佳方式是什么AVPlayer,我不希望用户注意到切换,而不会暂停视频播放或缓冲.
有什么建议吗?

我不确定youtube服务器是否支持这种功能,或者我是否需要在客户端进行此功能.

youtube objective-c ios avplayer

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

AVPlayer缓慢加载

我正在使用AVPlayer远程网址播放mp3文件.我对mp3的初始加载时间有一些问题,它非常慢(大约5-8秒).
我将它与其他第三方玩家进行了比较,速度要慢得多,我也将它与Android玩家进行了比较,而且速度也慢得多.
所以问题不在于网址本身,也不在于网络连接.

另一个有趣的一点是,在AVPlayer开始播放mp3后,寻求非常快(几乎立即),这是否意味着播放器在开始播放前下载整个mp3文件,这就是它如此慢的原因?
我可以控制这种行为吗?如果没有,任何其他想法可能是什么原因?

audio ios avplayer

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

点击状态栏时滚动到顶部

我有一个视图控制器(让它调用MainViewContoller),它存在3个不同的表(一次一个),用户可以点击一个段控件来切换这些表.

为了呈现这3个表,MainViewContoller有3个其他视图控制器(A,B和C),每个都有UITableView一个子视图并处理它自己的数据.
当a MainViewContoller加载时,它启动控制器A,B和C,并将它们的tableViews添加到它的视图中:

- (void)viewDidLoad {
    [super viewDidLoad];

    ViewControllerA *vcA = [ViewControllerA alloc] init];
    [self.view addSubview:vcA.view];

    ViewControllerB *vcB = [ViewControllerB alloc] init];
    [self.view addSubview:vcB.view];

    ViewControllerC *vcC = [ViewControllerC alloc] init];
    [self.view addSubview:vcC.view];
}
Run Code Online (Sandbox Code Playgroud)

因此,例如当用户点击段控件并选择A时,MainViewContoller隐藏表B和C,并取消隐藏表A.这样的事情:

if (userTapOnA) {
    self.viewControllerA.tableView.hidden = NO;
    self.viewControllerB.tableView.hidden = YES;
    self.viewControllerC.tableView.hidden = YES;
}  
Run Code Online (Sandbox Code Playgroud)

问题:

当用户点击状态栏时,我希望当前可见表将滚动到顶部.
这种行为非常基本,并且在使用常规视图控制器时可以免费获取,但正如您所看到的,我的视图控制器不是常规的.
我想通过使用其他控制器视图作为MainViewContoller视图我打破默认行为,所以我MainViewContoller不处理状态栏点击.

有人知道如何解决这个问题?

iphone objective-c uitableview uiviewcontroller ios

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

OpenGL ES 2.0绘制多个纹理

我相信,我的问题非常简单,我正在使用OpenGL ES 2.0绘制一个简单的2D场景.
我有一个背景纹理,可以拉伸整个屏幕,还有一个花的纹理(或者我称为精灵?),它在屏幕上的特定位置绘制.

因此,我能想到这样做的简单方法是调用glDrawArrays两次,一次使用背景纹理的顶点,另一次使用花朵纹理的顶点.

这是正确的方法吗?如果是这样,那是不是意味着10朵花我需要打glDrawArrays10次​​?

混合呢?如果我想将花朵与背景混合,我需要背景和花朵像素颜色,这可能是两个绘制没有问题?

或者可以一次抽奖吗?如果是这样,我怎么能创建一个着色器,知道它现在是处理背景纹理顶点还是花纹理顶点?

或者可以一次抽奖吗?     

一次绘制的问题是着色器需要知道当前顶点是背景顶点(比使用背景纹理颜色)还是花顶点(比使用花纹理颜色),我不知道该怎么做它.  

这是我如何使用一个绘制调用来绘制背景图像拉伸整个屏幕,花是半个大小居中.

- (void)renderOnce {
    //... set program, clear color..

    glActiveTexture(GL_TEXTURE2);
    glBindTexture(GL_TEXTURE_2D, backgroundTexture);
    glUniform1i(backgroundTextureUniform, 2);

    glActiveTexture(GL_TEXTURE3);
    glBindTexture(GL_TEXTURE_2D, flowerTexture);
    glUniform1i(flowerTextureUniform, 3);

    static const GLfloat allVertices[] = {
        -1.0f, -1.0f, // background texture coordinates
        1.0f, -1.0f,  // to draw in whole screen
        -1.0f,  1.0f, //
        1.0f,  1.0f,

        -0.5f, -0.5f, // flower texture coordinates
        0.5f, -0.5f,  // to draw half screen size
        -0.5f,  0.5f, // and centered …
Run Code Online (Sandbox Code Playgroud)

textures opengl-es sprite opengl-es-2.0

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

Swift - 向下转换的数组数组将无法编译

如何将数组AnyObject 数组转换为数组String 数组

我尝试了以下代码:

let v1:[[AnyObject]] = [["hello"]] // v1 type is [[AnyObject]]
let v2 = v1 as! [[String]]         // compile error!
Run Code Online (Sandbox Code Playgroud)

但是这段代码不会编译错误:

'String'与'AnyObject'不同

如果我只是尝试向下转换数组的AnyObject数组String,它工作正常:

let v1:[AnyObject] = ["hello"] // v1 type is [AnyObject]
let v2 = v1 as! [String]       // v2 type is [String] as expected
Run Code Online (Sandbox Code Playgroud)

casting ios swift

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

iOS - 在设备处于纵向模式时以横向方式捕获视频

在设备处于纵向模式时,是否可以在横向捕获视频?

这样的事情:
在此输入图像描述

实际上我需要的是以纵向捕捉,但宽度>高度,我不希望用户旋转设备,但我确实想要捕捉像横向模式更广泛的图片.

只是将预览图层框架更改为宽(宽度>高度)当然不够.

我尝试更改预览图层的视频方向,但这将旋转图片,这不是我想要的.

previewLayer.connection.videoOrientation = .landscapeRight  
Run Code Online (Sandbox Code Playgroud)

这有什么意义吗?

avfoundation ios avcapturesession landscape-portrait

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