Tag: 核心animation

SIGABRT消息仅适用于iOS5

我正面临我的应用程序的一个奇怪的崩溃,只发生在iOS5。 这个问题似乎与我的核心animation方法bellow,因为当我没有设置值为aAnimation.repeatCount或0它正在工作,但是当它旋转我使用得到SIGABRT消息错误: – [NSConcreteValue doubleValue]:无法识别的select器发送实例0x9628100当我触摸设备/模拟器屏幕。 任何帮助将不胜感激 我的观点定义 – (void)loadView { CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; UIView * contentView = [[UIView alloc] initWithFrame:screenRect]; contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; self.view = contentView; [contentView发布]; } 设置一个子视图 – (void)setUpPlacardView:(NSInteger)picture { //创build标牌视图 – 其init方法根据图像计算其框架 PlacardView * aPlacardView = [[PlacardView alloc] init:picture asColor:asColor]; aPlacardView.desaturation = kotucHue; self.placardView = aPlacardView; [aPlacardView发布]; […]

在iOS上使用resizableImages时避免混合图层

我试图避免iOS上的混合图层来提高性能。 不过,我注意到我用于UITableViewCell的backgroundView的可resize的图像被标记为混合图层: 实际上,使用任何可resize的图像(甚至是不带透明度的JPEG)都会导致图层混合,如此截图所示,首先在UIImageView使用PNG和JPEG作为可resize的图像。 唯一不需要混合图层的可resize的图像是一个1×1像素的图像,从底部看: 有什么办法可以避免这种情况? 核心animation分析是不准确的艺术(至less对我来说),但我认为这是滚动我的表格视图下降到大约25 FPS的主要贡献者。 编辑2:经过更多的实验,我发现,如果我只是垂直或水平拉伸的图像(PNG或JPG),他们没有标记为混合层。 但是,在更多的实验中,我认为这可能是因为只有一维的图像较小。 我的图像没有被视为混合在100×100,但它是在150×100。

iOS AssistiveTouch使用自定义键盘时animation较慢

我正在构build一个自定义的键盘,现在一切都很好,除非在启用自定义键盘的过程中使用AssistiveTouch时,点击打开它时,AssistiveTouch的animation有点迟缓(慢放大,缩小)。 我在iPhone 4s和iPhone 6上testing过,同样的麻烦,所以我认为不是关于设备硬件或资源消耗。 任何人有同样的麻烦或知道的原因? 以及如何解决它?

如何根据具有打字机效果的UILabel设置单元格的高度

我在UITableView的单元格中有一个UILabel。 要根据标签的高度来调整单元格的高度,没关系,它可以很好地工作。 但是我需要添加另一个约束。 我需要用打字机效果(逐字母)显示UILabel。 我的扩展效果很好: extension UILabel{ func setTextWithTypeAnimation(id:String, typedText: String, pauseCharacterArray: [Int:Double], characterInterval: TimeInterval = 0.06 ) { text = "" let group = DispatchGroup() group.enter() DispatchQueue.global(qos: .userInteractive).async { for (index, character) in typedText.characters.enumerated() { DispatchQueue.main.async { self.text = self.text! + String(character) } Thread.sleep(forTimeInterval: characterInterval) } group.leave() } group.notify(queue: .main) { //do something } […]

layoutAttributesForSupplementaryViewOfKind:atIndexPath:传入不正确的indexPath

我有一个自定义的UICollectionViewLayout ,它使用补充视图在每个页面的底部放置一个页脚。 这似乎一直工作,直到我开始在页面的底部插入单元格。 由于补充视图必须链接到UICollectionView中的NSIndexPath,因此在准备布局方法中,我检测页面上的最后一个单元格,然后将补充视图的layoutAttributes存储到页面上的最后一个indexPath。 这是插入新单元格之前的集合视图布局: |- Page 1 |– [0, 0] |– [0, 1] |– [0, 2] |- Footer (indexPath [0, 2]) |- Page 2 |– [1, 0] |– [1, 1] |- Footer (indexPath [1, 1]) 正如所料,我的prepareLayout方法创build和存储UICollectionViewLayoutAttributespath[0, 2]和[1, 1] [0, 2] UICollectionViewLayoutAttributes。 layoutAttributesForSupplementaryViewOfKind:atIndexPath:方法也被调用两次,返回indexPaths( [0, 2]和[1, 1] )的正确属性 现在的问题是,当我在索引[1, 2]处插入新的单元格时[1, 2] prepareLayout方法正确地重新计算布局,并像预期的那样将第二个页脚的indexPath更改为[1, 2] 。 但是,当再次调用layoutAttributesForSupplementaryViewOfKind:atIndexPath:来更新接口时,其indexPath属性仍然返回[1, 1] […]

iPhone:隐藏视图后重新启动循环animation,然后重新出现?

我的应用程序有两个不同的视图标签栏。 在第一个选项卡上,其视图具有连续循环的animation。 当我点击第二个标签,然后回到第一个,animation已经停止。 我知道我可以在viewWillAppear:方法中重新启动它,但是问题比这个更大。 具体来说,如果应用程序转换到后台状态,则animation也将停止,然后移回到前台。 在这种情况下,viewWillAppear不会被调用前景转换,所以viewWillAppear技术不会做任何事情。 处理这种情况的最好方法是什么? 谢谢。

将自动布局与核心animation结合在一起

我是新来的核心animation,我正在努力与一件事 – 如何结合自动布局与核心animation。 其实我在核心animation的文档中只发现了一句,这里引用了Autolayout 请记住将视图约束更新为animation的一部分如果您使用基于约束的布局规则来pipe理视图的位置,则必须删除可能会干扰animation的任何约束,作为configuration该animation的一部分。 约束会影响您对视图的位置或大小所做的任何更改。 它们也影响视图与其子视图之间的关系。 如果您正在对这些项目中的任何项目进行animation更改,则可以删除约束,进行更改,然后应用所需的任何新约束。 但是,正如我所尝试过的,并不像看上去那样两面派。 这是我的情况。 我devise了一个广泛使用自动布局的滑动菜单。 这是这个观点的外观。 我使用自动布局约束来强制滑动菜单中的这些项目的比例定位。 其实这里有很多的限制,我不想在我的问题中发表所有这些,甚至可能是他们不需要直接回答这个问题,但是如果你需要他们,我可以更新那些post限制。 您在gif中看到的animation仅通过自动布局来达到。 我只是添加了出口到滑动菜单的高度约束,并以这种方式改变它:(代码是用Xamarin Monotouch编写的,但是我相信应该清楚这里为纯iOS开发者所做的) private void AnimateSlideMenuAppearance() { float height; if (isSlideMenuShown) { height = 0; } else { height = slideMenuHeight; } UIView.Animate (0.4, delegate { this.slideMenuHeightConstraint.Constant = height; this.View.LayoutIfNeeded (); }, delegate { isSlideMenuShown = !isSlideMenuShown; }); } 现在我想获得更复杂的外观过渡。 点击这里看看我想达到的效果。 […]

什么时候应该使用CATransformLayer?

我已经阅读了文档和几个例子,但仍然无法理解何时完全使用CATransformLayer 。 一个普通的CALayer在z = 0平面上展平了所有东西,但这不是CATransformLayerfunction吗? math解释将是非常有帮助的。

iOSbutton在animation过程中不可点击

当我使用类别方法向我的button添加animation时,我无法单击该button,似乎它被禁用: [_compassCalibrateButton pulse:1.5 continuously:YES]; _compassCalibrateButton.userInteractionEnabled=YES; 我有一个UIView类别contatining这个: – (void)pulse:(float)secs continuously:(BOOL)continuously { [UIView animateWithDuration:secs/2 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{ // Fade out, but not completely self.alpha = 0.3; } completion:^(BOOL finished) { [UIView animateWithDuration:secs/2 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{ // Fade in self.alpha = 1.0; } completion:^(BOOL finished) { if (continuously) { [self pulse:secs continuously:continuously]; } }]; }]; }

关于非脚本animation场景工作stream程的思考

我被要求研究开发适用于iPad的儿童书籍,其中许多应用程序商店都是这样的。 这听起来像一个非常好的项目,但我以前的iOS项目是一个更“静态”的types,绘制视图,滚动,缩放,表等,我很难想出如何做这个新的应用程序。 我已经从Flash过渡到Objective-C,并且Flash中的许多概念已经被certificate具有iOS等价物,这使得转换非常平滑。 随着创造许多手animation面的交互animation伴随而来的任务,我无法弄清楚正确的工作stream程将是什么样子的iOS。 在Flash中,由于集成的时间轴/关键帧animation工具,这是一件轻而易举的事情。 当然,我知道有很多选项可以研究,但是我对自己想出的技术没有信心: 完全脚本化的animation – 这对于简单的对象级animation来说很好,但是如果你需要一个手animation场景的优点,用代码写所有东西都是疯狂的。 Quicktime电影 – 电影可以是任何animation环境(Flash,After Effects,3D渲染等)的结果,所以您的animation可以是任何东西。 尽pipe这样做不错,但不好的一面是文件大小的增加,交互性的限制很大,如果将多部电影结合起来,则会对性能产生非常不利的影响。 纹理地图 – ( 看这篇文章 ),虽然是一个伟大的技术用于灵活的animation,我假设在iOS上使用这将限制您使用一个非常小的框架限制animation的复杂性或非常小的animation,限制视觉字符的大小。 谁知道什么样的工作stream团队用来创build应用程序/游戏中的animation,如快乐树朋友:拍快乐( video,不介意评论 )或割绳子( iTunes )中的外星人/青蛙? 是否有任何工具或库在XCode和可能的第三方软件之间来回加速? 还有最后一个亵渎的问题:是否有一种工具可以将Adobe Flash中的animation序列作为Cocoa对象导入,然后您可以使用这些对象进行编码? (注意: 已经在JS中完成了 ) 干杯, EP。 类似的问题没有答案 iphone / ipad:如何将flashanimation合并到objective-c中?