小编B.S*_*.S.的帖子

如何检测UIImagePickerController预览状态?

我使用标准图像选择器制作一些相机照片.

当用户制作照片时,图像选择器会向他显示预览屏幕,其中有2个按钮" 重新拍摄 "和" 使用 ".

如何检测预览屏幕现在是否处于活动状态或按下"重拍"按钮? 可能吗 ?有用的属性或事件是什么?像图像源是库的属性 - 允许编辑,显示类似的屏幕.

UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
Run Code Online (Sandbox Code Playgroud)

camera objective-c uiimagepickercontroller ios

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

正确存储应用程序内购买

是否有任何建议如何存储应用内购买结果.

我使用raywenderlich教程购买

它将结果存储到NSUserDefaults.

所以问题:将应用内结果存储为bool值是否安全NSUserDefaults.因为每个人都可以查看Library/Preferences文件夹,看看那里写的是什么.

iphone objective-c nsuserdefaults in-app-purchase ios

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

如何检查是否有任何应用程序与文件扩展名相关联

我想在我的iOS应用程序中制作"Open in .."功能.

有没有办法检查此设备上的任何应用是否与我要共享的文件扩展名相关联?

如果当前设备上没有应用程序打开具有此类扩展名的文件,UIDocumentInteractionController而不是在单击"打开方式..."按钮后显示,但我不希望在这种情况下显示此按钮.

所以问题是:如何检查设备上的任何应用程序是否可以打开某个具有特定扩展名的文件?


更新:

例如UIDocumentInteractionController具有NSArray财产icons.

它包含可以使用我的扩展名打开文件的所有应用程序的图像.但是,如果没有应用程序,它会覆盖空应用程序的图像.

所以我不能用它来检查它docInteractionController.icons.count == 0.我正在寻找其他技巧.

提前致谢.

iphone objective-c ipad ios uidocumentinteraction

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

ALAssetsLibrary获取相机胶卷

我使用枚举所有资产组 ALAssetsLibrary

这是代码:

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

void (^enumerate)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop)
{
    if (group == nil)
    {
        // enumerated all albums..
    }

    // I hot to check if group is Camera Roll ?

};

[library enumerateGroupsWithTypes:ALAssetsGroupAll
                       usingBlock:enumerate
                     failureBlock:nil];
Run Code Online (Sandbox Code Playgroud)

如何检查一些当前枚举的是CameraRoll

编辑:正如我测试的那样,它始终是最后一个,使用此枚举.但我不确定这是否是规则,是否有任何我错过的参考?

objective-c ios alassetslibrary

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

AVFoundation相机变焦

我使用AVFoundation框架来显示来自相机的视频.

我如何使用它的代码通常是:

session = [[AVCaptureSession alloc] init] ;
...   
captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
...
[cameraView.layer addSublayer:captureVideoPreviewLayer];
...
Run Code Online (Sandbox Code Playgroud)

所以我想为相机添加缩放功能.

我找到了2个如何实现缩放的解决方案.

第一:是使用CGAffineTransform:

cameraView.transform = CGAffineTransformMakeScale(x,y);

第二种:将cameraView放在滚动视图中,设置最大和最小滚动并将此视图设置为缩放视图.

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return cameraView;
}
Run Code Online (Sandbox Code Playgroud)

什么是缩放更好的性能和质量的最佳方法?还有其他解决方案可以进行缩放吗?也许我错过了AVFoundation缩放的一些方法.

谢谢.

objective-c avfoundation ios

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

UISlider平滑地改变价值

我有一个UIslider设置AVAdioRecording的位置:

CGRect frame = CGRectMake(50.0, 230.0, 200.0, 10.0);
                     aSlider = [[UISlider alloc] initWithFrame:frame];
                     // Set a timer which keep getting the current music time and update the UISlider in 1 sec interval
                     sliderTimer = [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];
                     // Set the maximum value of the UISlider
                     aSlider.maximumValue = player.duration;
                     // Set the valueChanged target
                     [aSlider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];
                     [self.ViewA addSubview:aSlider];




 - (void)updateSlider {
// Update the slider about the music time

[UIView beginAnimations:@"returnSliderToInitialValue" context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:1.3]; …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uislider ios

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

如果在didFinishLaunchingWithOptions方法中从URL打开应用程序,如何处理?

当从某些URL AppDelegates's方法打开iOS应用程序时,会按以下顺序调用:

1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

2. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
Run Code Online (Sandbox Code Playgroud)

didFinishLaunchingWithOptions如果从URL打开应用程序,如何知道方法.可能有一些我想念的发布选项?

objective-c ios

6
推荐指数
2
解决办法
5268
查看次数

3D Touch和UITableViewCell

我在iPhone 6s上添加了一些测试3D Touch功能UITableViewController.一般来说它工作正常,但我能够观察到一些问题,我不知道发生了什么以及如何以正常方式解决这个问题.

1)我的单元格是可选的,因此用户可以按下它或使用"3D Touch".问题是,当我使用"Pop"和"Peek"时,UITableViewCell它会被选中,我无法使用setSelected:setHighlighted:方法以正常方式取消选择.我尝试在不同的地方取消选择,即使previewingContext:commitViewControllerpresentViewController完成时也是如此.他们什么都不做,细胞仍处于选定状态.我通过调用reviewingContext.sourceView和其他临时代码检索了选定的单元格,这些代码给了我选定的单元格,但这些方法不起作用.

  • 所以问题是当用户在其上应用"Pop"时,有一种正常的方法来取消选择(或更好地选择)单元格吗?

2)我还注意到,有时当我取消"Pop"手势并将单元格置于初始状态时(当previewingContext:viewControllerForLocation方法甚至没有被调用时),我的UI就会挂起并且根本不响应触摸.我需要杀死才能使它发挥作用.看起来很奇怪,我查了一下这个教程.它工作得很好,没有提到问题,但是它们不在单元格上注册委托,但是UITableView这样"Pop"手势突出显示整个tableView,而不是单元格.

  • 有什么想法,这里有什么不对吗?

以下是我在测试中实现3D触摸的UITableViewController方法UIViewControllerPreviewingDelegate

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCellWithIdentifier("SomeDemoID",
        forIndexPath: indexPath) as! UITableViewCell

    // Some cell configuration

    if #available(iOS 9.0, *) {
        if traitCollection.forceTouchCapability == .Available {
            self.registerForPreviewingWithDelegate(self, sourceView: cell)
        }
    } else { // Fallback on earlier versions}

    return cell; …
Run Code Online (Sandbox Code Playgroud)

swift ios9 3dtouch

6
推荐指数
2
解决办法
3551
查看次数

禁用Xcode 8扩展

我试图创建新的 Xcode 8 Source Editor Extension,但由于某种原因基本的例子总是disabled(截图)对我来说,我不确定它是否是测试版的一些错误或我遗漏了一些东西.

所以我创建了几乎基本的扩展,例如WWDC视频和示例教程,由于某种原因,这个菜单项总是被禁用.

我在终端中运行sudo/usr/libexec/xpccachectl并重新启动Mac.我使用的是10.11.5 Mac OS.

还我测试工作实施例从像github上这个 (截图2)但它们也被禁用.

**

所以我的问题是:由于Xcode 8仍然处于测试阶段或者我的身边缺少某些配置以使扩展工作,这是否是某种错误?

在此输入图像描述

在此输入图像描述

macos xcode xcode8 xcode-extension

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

如何知道NSString是否适合UILabel以及最后一个适合的字符串的索引?

我有4行UILabel,具有精确的框架和字体.

我需要知道这个字符串是否适合标签,以及最后一个字符的索引是什么.

objective-c nsstring uilabel ios

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