javascript

git

python

java

git-remote

github

django

c#

reactjs

c++

undefined

scrum

kubernetes

ruby-on-rails

.net

.net-framework-version

operators

git-fetch

typescript

user-experience

iPhone-是否可以将UITableView配置为允许多选?

对于iPhone,是否可以配置UITableView使其允许多选?

我已经尝试为每个UITableViewCell覆盖-setSelected:animated:,但是尝试捏合所需的行为非常棘手,因为很难将真正的未选择项与UITableView认为由于选择了另一个单元格而未选择的项分开!

希望有人能帮忙!

谢谢,

缺口。

trans by 2020-08-12T10:08:27Z

iPhone:以编程方式压缩录制的视频以共享吗?

在录制视频之前调用相机视图时,我已经实现了叠加视图。

pickerController.cameraOverlayView =myOverlay;

录制视频并通过电子邮件等方式共享后,可以进行视频录制并将视频保存到相册中。

如果我将视频质量用作“高质量”,则录制的视频已经变得很大。 例如,如果我以高质量录制视频30秒钟,则录制的视频已变为30-40 mb。

pickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;

我如何编程才能在共享之前压缩高质量的录制视频,就像Apple如何使用内置视频录制器进行压缩一样?

请指导我解决此问题。

谢谢!

更新:

这是我最近正在尝试的方法,但是仍然没有成功:我想压缩录制的音频,并将它们存储在didFinishPickingMediaWithInfo中,并将实际的视频路径本身存储在同一相册中,而不是其他位置。 当我从照片库中选取时,我测试了将相同的视频压缩到非常小的尺寸,但是虽然我使用了下面的AVAssetExportSession代码,但是从相机拍摄并通过didFinishPickingMediaWithInfo来的相同视频未压缩。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];


if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{

    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    NSString *urlPath = [videoURL path];

    if ([[urlPath lastPathComponent] isEqualToString:@"capturedvideo.MOV"])
    {
        if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (urlPath))
        {
            [self copyTempVideoToMediaLibrary :urlPath];


        }
        else
        {
            NSLog(@"Video Capture Error: Captured video cannot be saved...didFinishPickingMediaWithInfo()");                
        }
    }       
    else
    {
        NSLog(@"Processing soon to saved photos album...else loop of lastPathComponent..didFinishPickingMediaWithInfo()");
    }
}    
[self dismissModalViewControllerAnimated:YES];
}

- (void)copyTempVideoToMediaLibrary :(NSString *)videoURL {

        dispatch_queue_t mainQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(mainQueue, ^{

    ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];

    ALAssetsLibraryWriteVideoCompletionBlock completionBlock = ^(NSURL *assetURL, NSError *error) {
        NSLog(@"Saved URL: %@", assetURL);
        NSLog(@"Error: %@", error);

        if (assetURL != nil) {

            AVURLAsset *theAsset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:videoURL] options:nil];

            NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:theAsset];

            AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:theAsset presetName:AVAssetExportPresetLowQuality];

            [exportSession setOutputURL:[NSURL URLWithString:videoURL]];
            [exportSession setOutputFileType:AVFileTypeQuickTimeMovie];

            [exportSession exportAsynchronouslyWithCompletionHandler:^ {
                switch ([exportSession status]) {
                    case AVAssetExportSessionStatusFailed:
                        NSLog(@"Export session faied with error: %@", [exportSession error]);
                        break;
                    default:
                        //[self mediaIsReady];
                        break;
                }
            }];
        }
    };

    [library writeVideoAtPathToSavedPhotosAlbum:[NSURL URLWithString:videoURL] completionBlock:completionBlock];
});
}
trans by 2020-08-12T05:49:35Z

iPhone-UISearchDisplayController没有结果tableView?

通常,UISearchDisplayController激活后会使tableView变暗并聚焦searchBar。 只要在searchBar中输入文本,它就会创建一个searchResultsTableView,该结果显示在searchBar和键盘之间。 当第二个UITableView加载/显示/隐藏/卸载时,将调用searchDisplayController的委托。 通常,它会在键入时显示实时搜索结果或自动补全条目。

在我的应用程序中,我想搜索一个Web服务,并且不想为用户输入的每个字母调用该Web服务。 因此,我要完全禁用searchResultsTableView,并在他输入文本时保留黑色的灰色覆盖。 一旦他点击搜索按钮,我便会触发搜索(带有加载屏幕)。

仅返回searchResultsTableView的零行看起来并不好,因为它显示一个空的searchResultsTableView并显示“无结果”消息。 我尝试隐藏显示的表格(searchDisplayController:didLoadSearchResultsTableView:),该表格可以正常工作,但是黑色变暗的覆盖层也被隐藏了,因此基础tableView再次完全可见。

除了从头开始重新创建UISearchDisplayController功能,还有其他想法吗?

trans by 2020-08-12T05:17:11Z

iPhone-如何使用UISearchBar搜索MKMapView?

我有一个需要具有类似搜索功能的应用程序,例如Apple“地图”应用程序(包括在iPhone,iPod Touch和iPad中)。

所涉及的功能应该不是一件容易的事,但是对于如何在搜索栏中输入街道地址,然后获取该地址的坐标或可以帮助我实际移动地图和 在那个地方的中心。

我的意思是,我必须查询什么,Apple是否提供“地址搜索API方法”? 还是我需要直接使用google maps API?

我很想听听应该怎么做。

trans by 2020-08-11T10:30:29Z

iPhone-iOS应用程序如何在后台无限期地保持TCP连接有效?

iPhone应用程序,通过TCP连接到远程服务器。 使用场景为:

  1. 应用程序(用户)将数据发送到服务器,服务器将数据响应。
  2. 服务器可能什么都不做,但可能会将数据发送到应用。

假设如果应用程序在30分钟内未将数据发送到服务器,则服务器将关闭连接。 即使用户什么也不做,我也想保持连接120分钟。

情况1:如果应用程序处于前台状态,则可以使用计时器将一些无效数据发送到服务器。 没问题。

情况2:如果用户按Home键,应用程序进入后台,该怎么办? 我不希望显示警报或干扰用户(他不在或正在玩游戏)。 我只是想让连接保持更长时间,当用户返回到应用程序时,他发现连接仍然可以保持连接并对此感到满意。

我已阅读有关iphone API的后台执行,多任务处理和本地通知的文档。 我不确定是否可以实现案例2。

仅使用合法的API,不得越狱。

trans by 2020-08-11T08:36:18Z

iPhone-NSManagedObjectContext performBlockAndWait:不在后台线程上执行吗?

我有这样声明的NSManagedObjectContext:

- (NSManagedObjectContext *) backgroundMOC {
    if (backgroundMOC != nil) {
        return backgroundMOC;
    }
    backgroundMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    return backgroundMOC;
}

请注意,它是使用私有队列并发类型声明的,因此其任务应在后台线程上运行。 我有以下代码:

-(void)testThreading
{
    /* ok */
    [self.backgroundMOC performBlock:^{
        assert(![NSThread isMainThread]); 
    }];

    /* CRASH */
    [self.backgroundMOC performBlockAndWait:^{
        assert(![NSThread isMainThread]); 
    }];
}

为什么调用performBlockAndWait在主线程而不是后台线程上执行任务?

trans by 2020-08-11T04:28:36Z

iPhone-在应用程序钥匙串中存储应用程序购买收据

我之前从未实现过In App Purchase,因此我使用了MKStoreKit包装器,并且可以正常工作。 MKStoreKit将所有收据作为BOOL保留在UserDefaults .plist中,因此,盗版者以“破解”状态分发应用内购买商品非常简单。 首次购买后,可以分发捆绑包,并可以重新创建.plist以启用IAP解锁。

我想扩展MKStoreKit以在iOS钥匙串中创建In App Purchase验证数据。 是否有任何缺点或可能的原因导致付费用户失败,不可靠或其他原因导致这样做完全是个坏主意? 我知道盗版是不可避免的,并且我绝对不想疏远付费用户,但是我觉得UserDefaults .plist太容易绕开了。

在我的情况下,购买时会将一个简单的字符串放入钥匙串中。 这样,如果分发了二进制文件,则尚未启用解锁功能。 当然,可以提出一种解决方法,但是这将花费更多的精力,并且知道如何找到TRUE / FALSE标志,并使它始终返回正确的值。 通过混淆,我什至可以使追踪它变得更加困难。

感谢您提供的所有见解,感谢您避免不必要的盗版,处理后回复的答案。 我对该解决方案的技术可行性更感兴趣。

trans by 2020-08-11T03:17:43Z

iPhone-使用ARC的优缺点是什么?

在iOS项目中使用新的自动引用计数(ARC)内存管理样式的优点和缺点是什么?

使用iOS 5.0 SDK开发时,可以选择不使用ARC吗?

您是否为新项目推荐ARC或手动参考计数(MRC)?

使用ARC的应用程序能否在iOS 5.0之前的操作系统版本上运行?

trans by 2020-08-11T01:03:11Z

iPhone-UITableView寄存器Nib:forCellReuseIdentifier:

我在WWDC视频中看到了这一点,但只是非常简短。 他们没有讨论如何创建实际的xib文件。

我有一个名为MyCustomCell的UITableViewCell子类。 在这里,我有几个属性UILabels,UIImageViews等...都设置为IBOutlets。

现在,在我的xib文件中...

如何设置为文件的所有者? 文件的所有者在哪里引用MyCustomCell类?

设置文件所有者后,如何将其与xib的根视图链接?

我尝试了一些设置,但使用它时总是出错。

哦,我用来注册的代码是...

self.cellNib = [UINib nibWithNibName:@"MyCustomCell" bundle:nil];
[self.tableView registerNib:self.cellNib forCellReuseIdentifier:@"CustomCell"];

谢谢

trans by 2020-08-10T22:32:06Z

iPhone-以编程方式更改UIView大小

我有一个UIView,我想在用户触摸按钮时更改大小。

CGRect newFrame = self.myview.frame;

newFrame.size.width = 200;
newFrame.size.height = 200;
[self setFrame:newFrame];

CGRect newFrame = self.searchField.frame;

newFrame.size.width = 200;
newFrame.size.height = 200;
self.searchField.frame=newFrame;

它们都不起作用,请不要进行任何更改。 我想将固定的宽度和高度设置为UIView。

trans by 2020-08-10T21:21:09Z

iPhone-使用CALay时无法编译代码

由于某些原因,当我尝试使用CALayer时出现链接器错误:

  "_OBJC_CLASS_$_CALayer", referenced from:

我已导入以下标头:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

码:

arrowImage = [[CALayer alloc] init];
trans by 2020-08-10T20:43:32Z

iphone-检测iOS应用是否在调试中运行

我将应用程序设置为将调试输出发送到控制台或日志文件。 现在,我想在代码中决定是否

  • 它在调试器(或模拟器)中运行,因此有一个控制台窗口,我想在其中直接读取输出,或者
  • 没有控制台窗口,因此应将输出重定向到文件。

有没有办法确定应用程序是否在调试器中运行?

trans by 2020-08-10T20:16:56Z

您如何提示用户对iphone应用程序进行评分,而无需等待他们删除该应用程序?

我指的是要求用户提交评论/评分的弹出窗口。

我知道这是可以完成的,因为Aardark应用程序确实可以做到……实际上它要问几次! (几乎是垃圾邮件。)但是必须有一个API来触发评分请求吗? Google对此没有任何爱。

trans by 2020-08-10T18:30:59Z

ipad-UIPinchGestureRecognizer的最大/最小缩放比例iPhone-i

如何才能将UIPinchGestureRecognizer的规模限制为最小和最大水平? 下面的scale属性似乎与最近的已知比例(最后一个状态的差值)有关,我无法弄清楚如何对要缩放的对象的大小/重量设置限制。

-(void)scale:(id)sender {

[self.view bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]];

if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
    lastScale = 1.0;
    return;
}

CGFloat pinchscale = [(UIPinchGestureRecognizer*)sender scale];
CGFloat scale = 1.0 - (lastScale - pinchscale);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform holderTransform = holderView.transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
[[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];

lastScale = [(UIPinchGestureRecognizer*)sender scale];

}

trans by 2020-08-10T13:34:14Z

iPhone-当前时间为HH:MM:SS am / pm格式?

如何以HH:MM:SS am / pm格式获取当前时间?

trans by 2020-08-10T09:29:34Z

目标c-刷新控制iOS 6 xcode

有谁有一个简短的示例说明如何将新的UIRefreshControl实施到xcode中。 我有一个显示Tweets的UITableViewController,希望能够下拉并刷新。

trans by 2020-08-10T07:31:45Z

一次关闭后,如何取回“允许推送通知”对话框?

我正在构建一个严重依赖APN的应用程序。 在我的应用程序首次启动时,iOS会询问是否允许该应用程序使用APN(作为registerForRemoteNotificationTypes:调用的结果)。 但是,一旦关闭,此对话框就永远不会弹出。 我必须手动转到Settings->Notifications->MyApp才能在此处启用/禁用操作。 那么,有没有一种方法可以避免这种烦恼,并在每次以调试模式启动应用程序时,真正体验用户在首次启动时会遇到的体验?

trans by 2020-08-10T04:38:07Z

iphone-核心数据-数据库中行的主键ID

假设我有一个存储在核心数据中的书籍清单。 我想通过它的主键ID搜索一本书。 我知道由Core Data创建的sqlite文件在每个表中都有一个ID列,但是无论如何这似乎并不向我公开。

有人有什么建议吗?

谢谢!

trans by 2020-08-10T02:11:54Z

ios-UITableView编辑模块

我有UITableView,我尝试在编辑模式下默认加载它。 问题是当我这一行table.editing=TRUE;我的行消失时,我实现了以下方法:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
// Return NO if you do not want the specified item to be editable.
return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{
return UITableViewCellEditingStyleDelete;
}


 - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
 {
 return NO;
 }

但没有运气。 我该怎么办?

trans by 2020-08-10T00:36:57Z

iPhone-将长按手势和拖动手势组合在一起

我的观点是

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveRight:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[bubbleView[rightCnt] addGestureRecognizer:panRecognizer];
[panRecognizer release];

现在,我想通过长按拖动来做同样的事情。

任何想法?

trans by 2020-08-09T23:09:26Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共73页