小编Pie*_*ter的帖子

如何创建iPhone的摇摆图标效果?

我想在我的应用程序中来回摆动图像,类似于当你按下它时iPhone图标的摆动.最好的方法是什么?

这是我第一次涉足不使用动画GIF的动画.我认为这个想法是来回轻微旋转图像以产生摆动效果.我已经看过使用CABasicAnimation和CAKeyframeAnimation.CABasicAnimation每次重复时都会创建一个抖动,因为它会跳转到from位置并且不会向内插回.CAKeyframeAnimation似乎是解决方案,除了我无法让它工作.我肯定错过了什么.这是我使用CAKeyframeAnimation的代码(不起作用):

    NSString *keypath = @"wobbleImage";
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:keypath];
animation.duration = 1.0f;
animation.delegate = self;
animation.repeatCount = 5;

CGFloat wobbleAngle = 0.0872664626f;
NSValue *initial = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0.0f, 0.0f, 0.0f, 1.0f)];
NSValue *middle = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(wobbleAngle, 0.0f, 0.0f, 1.0f)];
NSValue *final = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(-wobbleAngle, 0.0f, 0.0f, 1.0f)];
animation.values = [NSArray arrayWithObjects:initial, middle, final, nil];

[imageView.layer addAnimation:animation forKey:keypath];
Run Code Online (Sandbox Code Playgroud)


或者可能有一个我只是缺少的完全简单的解决方案.感谢任何指针.谢谢!

iphone animation rotation ios

52
推荐指数
4
解决办法
4万
查看次数

链接旧版本的libstdc ++

安装新的构建机器后,我发现它带有6.0.10的标准C++库

-rw-r--r--  1 root root 1019216 2009-01-02 12:15 libstdc++.so.6.0.10
Run Code Online (Sandbox Code Playgroud)

但是,我们的许多目标机器仍然使用旧版本的libstdc ++,例如:

-rwxr-xr-x 1 root root  985888 Aug 19 21:14 libstdc++.so.6.0.8
Run Code Online (Sandbox Code Playgroud)

显然ABI在最后两个0.0.1中发生了变化,因为尝试运行程序会导致结果

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
Run Code Online (Sandbox Code Playgroud)

我尝试显式安装旧版本的gcc,但没有帮助.升级目标计算机是我无法控制的,所以不能选择.使用较旧的libstdc ++的机器上运行构建的最佳方法是什么?

我在apt-cache中搜索了要安装的较旧的libstdc ++版本,但显然没有旧版本的6可用?

c++ linux linker

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

NSInteger和NSUInteger处于混合的64位/ 32位环境中

我在NSLog/NSAssert等调用中有相当数量的字符串格式说明符,它们分别使用%d%u使用NSInteger (= int on 32bit)NSUInteger (= unsigned int on 32bit)类型.

将应用程序转换为64位时,会发出警告(当然),正如%ld %lu现在成为的类型longunsigned long类型所预期的那样.

简单地转换格式说明符当然会在32位构建中引入反向警告.
因此,我认为唯一可以免于警告的解决方案是使用64位说明符,并在34位值的类型中转换为34位值,并在32位构建中给出警告.

但我想知道是否有专门针对NSIntegerNSUInteger类型的格式说明符可以在没有强制转换的情况下在两种架构上工作?

64-bit objective-c ios arm64

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

如何获得共享照片流ALAsset的ALAssetRepresentation?

当我尝试从照片流访问图片时,有时该[asset defaultRepresentation]方法返回nil.

根据文档,如果资产尚未在本地可用,则可能会发生这种情况.

对于尚未在本地可用的共享照片流中的资产,此方法返回nil.如果资产将来可用,则会发布ALAssetsLibraryChangedNotification通知.

一旦我在Photos.app中查看照片,它也可用于我的应用程序,但显然我想让我的应用程序触发"本地下载"事件.

我查看了Apple 的MyImagePicker示例代码,但它表现出相同的行为(只有缩略图可用)

如何在本地提供资产?

编辑:由于Apple在iOS8中引入了Photos.framework,并且在iOS9中使用ALAssets已被弃用,因此可能永远不会修复.

objective-c ios alasset photostream

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

在XCTestCase中使用UIImage imageNamed

我无法获得依赖于imageNamed用于工作的代码的Cocoa Touch静态库的XCTestCase单元测试.

我将我的图像"plane.png"添加到了测试目标,但[UIImage imageNamed]仍然保持返回nil.
当我在测试中明确指定图像的路径并从文件加载图像时,它确实有效.

NSString* imagePath = [[[NSBundle bundleForClass:[self class]] resourcePath] stringByAppendingPathComponent:@"plane.png"];
UIImage* imageWorks = [UIImage imageWithContentsOfFile:imagePath];

UIImage* imageStaysNil = [UIImage imageNamed:@"plane.png"];
Run Code Online (Sandbox Code Playgroud)

如何为使用的代码编写单元测试imageNamed

unit-testing objective-c uiimage ios xctest

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

ARC是否可以使用Core Graphics对象?

我最近使用自动参考计数(ARC)开始了一个新项目.
当我分配CALayer的内容时:

UIView* view = ...
UIImage* image = ...
view.layer.contents = image.CGImage
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误

使用ARC不允许将非Objective-C指针类型'CGImageRef'隐式转换为'id'

简单地铸造CGImageRefid隐藏的错误,但我想知道如果ARC仍然正常工作呢?

core-animation core-graphics objective-c ios automatic-ref-counting

17
推荐指数
2
解决办法
9761
查看次数

针对不同程序开发的库的Subversion存储库布局

我负责几个(相当小的)程序,它们通过不同的库共享大量代码.我想知道最好的存储库布局是什么来开发不同的prorgrams(和库),并使库在所有程序中保持同步.

为了论证,我们假设有两个带有两个库的程序:

  • PROGRAM1
    • LIBRARY1
    • Library2
  • 程序2
    • LIBRARY1
    • Library2

当然,库的错误修复和增强应该(最终)合并到所有程序.由于在处理不同程序时正在处理这些库,因此使用外部定义似乎是不可能的.

所以我想把我的库除了一个地方作为供应商分支处理,但我不确定这个的最佳布局是什么.

我正在思考以下问题:

  • 图书馆
    • 图书馆1(祖先)
    • 图书馆2(祖先)
  • PROGRAM1
    • Program1代码
    • Library1(供应商分支)
    • Library2(供应商分支)
  • ...

然后说在开发Program1时对Library2进行了一些更改,我将它们合并回存储库的Libraries部分,并在需要时将它们从那里合并到所有其他程序.

合并到其他程序并不总是立即发生,在Program2上工作的人可能接近发布,而是首先完成,创建标记,然后才更新所有库.

我有点担心这会在很长一段时间后导致许多合并和一些维护问题,但我真的没有看到更好的解决方案.

再说一次,这似乎是一个相当常见的用例,所以我想我只是问一下stackoverflow社区,实现这个目的的最佳存储库布局是什么?

svn repository

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

在AVCaptureVideoPreviewLayer中精确裁剪捕获的图像

我有一个使用AV基金会的照片应用程序.我使用AVCaptureVideoPreviewLayer设置了一个预览图层,它占据了屏幕的上半部分.因此,当用户试图拍摄他们的照片时,他们只能看到屏幕的上半部分看到的内容.

这很好用,但是当用户实际拍摄照片并尝试将照片设置为图层的内容时,图像会失真.我做了研究并意识到我需要裁剪图像.

我想做的就是裁剪完整捕获的图像,这样剩下的就是用户最初在屏幕上半部分看到的内容.

我已经能够完成这个,但我通过输入手动CGRect值来做到这一点,但它看起来仍然不完美.必须有一种更简单的方法来做到这一点.

在过去的两天里,关于裁剪图像,我已经完成了关于堆栈溢出的每个帖子,但没有任何工作.

必须有一种方法可以以编程方式裁剪捕获的图像,以便最终图像与预览图层中最初看到的完全相同.

这是我的viewDidLoad实现:

- (void)viewDidLoad
{
    [super viewDidLoad];

    AVCaptureSession *session =[[AVCaptureSession alloc]init];
    [session setSessionPreset:AVCaptureSessionPresetPhoto];

    AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    NSError *error = [[NSError alloc]init];
    AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];

    if([session canAddInput:deviceInput])
        [session addInput:deviceInput];

    CALayer *rootLayer = [[self view]layer];
    [rootLayer setMasksToBounds:YES];

    _previewLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:session];
    [_previewLayer setFrame:CGRectMake(0, 0, rootLayer.bounds.size.width, rootLayer.bounds.size.height/2)];
    [_previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

    [rootLayer insertSublayer:_previewLayer atIndex:0];

    _stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
    [session addOutput:_stillImageOutput];

    [session startRunning];
    }
Run Code Online (Sandbox Code Playgroud)

以下是用户按下按钮捕获照片时运行的代码:

-(IBAction)stillImageCapture {
    AVCaptureConnection *videoConnection = nil;
    for (AVCaptureConnection *connection in …
Run Code Online (Sandbox Code Playgroud)

objective-c avfoundation calayer ios avcapturesession

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

SKTexture和UIImage的scale属性

是否有任何理由为什么在构建时SKTexture似乎忽略了.scale图像textureWithImage:

我有一个可用的图像资源,"retina_image@2x.png"

当我在创建UIImage时尝试创建纹理时:

UIImage* image = [UIImage imageNamed:@"retina_image"];
SKTexture* texture_image = [SKTexture textureWithImage:image];
NSLog(@"image size %@, scale %f", NSStringFromCGSize(image.size), image.scale);
NSLog(@"texture from image, size %@", NSStringFromCGSize(texture_image.size));
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

image size {50, 50}, scale 2.000000
texture from image, size {100, 100}
Run Code Online (Sandbox Code Playgroud)

虽然我希望得到

image size {50, 50}, scale 2.000000
texture from image, size {50, 50}
Run Code Online (Sandbox Code Playgroud)

因为图像的大小(以磅
为单位)是50x50 这也是您使用资源直接构造纹理时获得的内容:

SKTexture* texture_named = [SKTexture textureWithImageNamed:@"retina_image"];
NSLog(@"texture named, size %@", NSStringFromCGSize(texture_named.size));
Run Code Online (Sandbox Code Playgroud)

给出以下输出(如预期的那样):

texture named, size {50, 50}
Run Code Online (Sandbox Code Playgroud)

这表明SKTexture在从图像构造时确定其自身大小时忽略scale属性,同时在从imagename构造时适当地遵守比例. …

objective-c uiimage ios retina-display sprite-kit

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

困惑:SKSpriteNode和SKTexture的区别.

我对SKSpriteNode和SKTexture Node感到困惑.我在教程中看到SKSpriteNode可以用来添加像[SKSpriteNode spritenodewithimagename:@"someimag"]这样的图像; 同样的事情发生在SKTexture中[SKTexture texturewithimge/file];

纹理和图像之间有什么区别.如果我们使用SKSpriteNode添加图像,那么使用SKTexture的原因是什么,或者如果我们使用SKTexture和Texture Atlases,那么我们为什么要添加要添加到SKSpriteNode中的图像.

混乱是存在的,两者之间有什么区别.

iphone ipad ios ios7 sprite-kit

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