小编Jac*_*cob的帖子

通过故事板逆转自定义搜索

我有一个自定义segue动画,当将新的视图控制器推入堆栈时发生.然而,当弹出与所述自定义segue一起呈现的视图控制器时,默认导航控制器动画发生(即,当父视图控制器从左边缘在屏幕上翻译时,当前视图控制器向右动画).

所以我的问题是:有没有办法编写一个自定义的pop segue动画,当从视图控制器弹出堆栈时会发生这种情况?

编辑(解决方案):

我最终定义了一个类似于所选答案的自定义segue.在Storyboard中,我将一个自定义segue从子视图控制器拖回到它的父级,给它一个标识符,新写的反向segue作为它的类.是的,我意识到它几乎与模态转换相同.客户要求需要这种疯狂,所以在任何人发表评论之前,要明白我知道在正常情况下不应该这样做.

- (void)perform {
  UIViewController *src = (UIViewController *)self.sourceViewController;
  UIViewController *dest = (UIViewController *)self.destinationViewController;

  [UIView animateWithDuration:0.3 animations:^{
    CGRect f = src.view.frame;
    f.origin.y = f.size.height;
    src.view.frame = f;

  } completion:^(BOOL finished){
    src.view.alpha = 0;
    [src.navigationController popViewControllerAnimated:NO];
  }];
}
Run Code Online (Sandbox Code Playgroud)

reverse objective-c storyboard ios segue

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

iOS 7+关闭模态视图控制器和强制纵向方向

我有一个UINavigationController作为我在iOS 7和iOS 8上的UIWindow的根视图控制器.从它的一个视图控制器,我提出了一个具有交叉溶解演示风格的全屏模态视图控制器.这个模态视图控制器应该能够旋转到所有方向,并且它工作正常.

问题是当设备以横向方向保持并且模态视图控制器被解除时.呈现模态的视图控制器仅支持纵向方向,并且我已确认UIInterfaceOrientationMaskPortrait返回到-application:supportedInterfaceOrientationsForWindow:.-shouldAutorotate也返回YES.然而,在解除模态之后,呈现视图控制器的方向仍然是风景.在允许模态采取设备方向的同时,如何强制它保持纵向方向?我的代码如下:

应用代表:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        UINavigationController *navigationController = (UINavigationController *)self.deckController.centerController;
        NSArray *viewControllers = [navigationController viewControllers];
        UIViewController *top = [viewControllers lastObject];

        if (top && [top presentedViewController]) {
            UIViewController *presented = [top presentedViewController];
            if ([presented respondsToSelector:@selector(isDismissing)] && ![(id)presented isDismissing]) {
                top = presented;
            }
        }

        return [top supportedInterfaceOrientations];
    }

    return (UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight);
}
Run Code Online (Sandbox Code Playgroud)

呈现视图控制器:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
} …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c rotation screen-orientation ios

13
推荐指数
2
解决办法
6228
查看次数

RestKit图片上传

我正在使用RestKit来驱动与我的Web服务器的交互.我正在尝试使用路由将一个Event对象POST到服务器并附加一个映像.代码如下:

  RKObjectManager *manager = [RKObjectManager sharedManager];

  RKObjectMapping *map = [self eventMapping];
  manager.serializationMIMEType = RKMIMETypeFormURLEncoded;
  map.rootKeyPath = @"event";
  [manager.mappingProvider setSerializationMapping:map forClass:[Event class]];
  [manager.router routeClass:[Event class] toResourcePath:@"/v1/events.json" forMethod:RKRequestMethodPOST];

  [manager postObject:event delegate:self block:^(RKObjectLoader *loader){
    RKObjectMapping *serMap = [[[RKObjectManager sharedManager] mappingProvider] serializationMappingForClass:[Event class]];
    NSError *error = nil;
    NSDictionary *d = [[RKObjectSerializer serializerWithObject:event mapping:serMap] serializedObject:&error];

    RKParams *p = [RKParams paramsWithDictionary:d];
    [p setData:[event imageData] MIMEType:@"image/jpeg" forParam:@"image"];
    loader.params = p;
  }];
Run Code Online (Sandbox Code Playgroud)

如果我使用序列化的Event对象创建一个RKParams实例,然后添加图像数据并将其指定为RKObjectLoader的params属性,所有属性都将成为一个大型序列化字符串.必须有一种方法来上传图像而不需要大量的字符串序列化.

我还尝试了一个映射到某个属性的NSData属性,沿途将UIImage转换为NSData,但RestKit抱怨它无法映射.有没有人这样做过?

upload image objective-c ios restkit

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

使用ALAssetsLibrary访问单个图像

请允许我先说这是我第一次使用ALAssetsLibrary.我需要访问用户保存的照片库中的最新照片.似乎要做到这一点,我必须创建一个ALAssetsLibrary实例并迭代用户库中的每个项目,然后再选择最后一个图像.这总是最糟糕的情况.是否有更快/更好的方法来解决这个问题?

iphone photo objective-c alasset alassetslibrary

9
推荐指数
1
解决办法
5926
查看次数

在动画UITextView时键入

我正在尝试使用可变高度的UITextView来更改大小以容纳其内容,但是当大小更改动画中的帧发生更改时,UITextView中不会捕获一到两次击键.动画持续时间为0.1秒,通常在您输入相当快的时候只会丢失一个字母.但是,当动画发生时,它在丢失的字母中非常一致.以下动画块发生在textViewDidChange:delegate消息中:

[UIView animateWithDuration:0.1 animations:^{

    [textView setFrame:CGRectMake(...)];

}];
Run Code Online (Sandbox Code Playgroud)

我用Google搜索并搜索了SO,但到目前为止还没有出现任何问题.有人遇到过这种情况么?

iphone animation typing objective-c uitextview

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

ALAssetRepresentation fullResolutionImage永远不会返回

我正在编写一个多线程应用程序,需要在后台集中上传ALAssetsLibrary中的照片.所以我有一个NSOperation子类,它通过资产的URL找到适当的ALAsset,并将图像添加到上传队列.

在当前ALAsset的上传队列中,我需要从图像中获取元数据,但是我遇到了一个问题:在ALAsset的ALAssetRepresentation上调用它们时,-metadata和-fullResolutionImage方法都不会返回.他们只是无限期地挂在那里.我尝试在LLDB中打印这些方法中的每一个的值,但它挂起了调试器,我最终杀死了Xcode,信号9样式.在后台队列上调用这些方法.

我在iPad 2上测试这些.这是在-assetForURL的成功块中找到ALAsset时添加到上传队列的方法:resultBlock:failureBlock:

- (void)addMediaToUploadQueue:(ALAsset *)media {
    @autoreleasepool {
        ALAssetRepresentation *defaultRepresentation = [media defaultRepresentation];
        CGImageRef fullResolutionImage = [defaultRepresentation fullResolutionImage];

        // Return if the user is trying to upload an image which has already been uploaded
        CGFloat scale = [defaultRepresentation scale];
        UIImageOrientation orientation = [defaultRepresentation orientation];

        UIImage *i = [UIImage imageWithCGImage:fullResolutionImage scale:scale orientation:orientation];
        if (![self isImageUnique:i]) return;

        NSDictionary *imageDictionary = [self dictionaryForAsset:media withImage:i];

        dispatch_async(self.background_queue, ^{
            NSManagedObjectContext *ctx = [APPDELEGATE createManagedObjectContextForThread];
            [ctx setUndoManager:nil];

            [ctx performBlock:^{
                ImageEntity *newImage = [NSEntityDescription insertNewObjectForEntityForName:@"ImageEntity"
                                                                    inManagedObjectContext:ctx]; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios alassetslibrary

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