<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki" -->

---
title: UIViewPropertyAnimator is Too Cute | daily.dev
description: An iOS developer more familiar with Android's animation APIs investigates why UIViewPropertyAnimator's animated properties (like alpha) don't match the actual...
canonical: https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: UIViewPropertyAnimator is Too Cute | daily.dev
og:description: An iOS developer more familiar with Android's animation APIs investigates why UIViewPropertyAnimator's animated properties (like alpha) don't match the actual...
og:url: https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki
og:image: https://api.daily.dev/og/posts/cDXQkWNki.png
og:image:alt: UIViewPropertyAnimator is Too Cute
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# UIViewPropertyAnimator is Too Cute

**[Square](https://daily.dev/sources/publicobject)** · 3 min read · 0 upvotes · 0 comments

## Summary

An iOS developer more familiar with Android's animation APIs investigates why UIViewPropertyAnimator's animated properties (like alpha) don't match the actual rendered pixels during animation. Through experiments, they show that setting a property inside the animator block causes the value to jump immediately to its final state while the pixels animate smoothly, and that only some properties (like alpha) get this treatment while others (like tintColor) change instantly. An update reveals a reader pointed them to CALayer.presentation(), which holds the in-flight visual state during animation, though the underlying mechanism connecting property assignment to animation remains unclear.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://publicobject.com/2025/01/26/uiviewpropertyanimator>

## Questions this post answers

### Why does button.alpha read as 0.0 immediately after calling startAnimation() on a UIViewPropertyAnimator even though the fade animation takes a full second to visually complete?

UIViewPropertyAnimator immediately sets the property to its target value in the model layer, so button.alpha reads 0.0 right after startAnimation() returns and on every frame afterward, even while the pixels are still visually fading. The animator captures the initial value and animates the presentation separately from the underlying property.

_daily.dev surfaces deep dives like this for developers debugging subtle UIKit animation mismatches._

### How can I inspect the actual mid-animation value of a UIKit property instead of its already-updated model value?

Use CALayer.presentation(), which returns a copy of the layer holding the values currently being rendered during an active animation, unlike the model layer's properties which jump to their final values immediately. This was pointed out as the mechanism behind why UIViewPropertyAnimator's alpha property doesn't match the drawn pixels mid-animation.

_Developers untangling UIKit and Core Animation internals can find similar findings on daily.dev._

## Similar posts on daily.dev

- [Debugging Notes on Two SwiftUI Animation Bugs](https://daily.dev/posts/debugging-notes-on-two-swiftui-animation-bugs-zk9mhqhkq) · Fatbobman · 0 upvotes · 0 comments
- [Combining Scroll-Driven Animations with @starting-style](https://daily.dev/posts/combining-scroll-driven-animations-with-starting-style-zeo2xs4ay) · Bram.us · 30 upvotes · 0 comments
- [Dialog Animation Gotchas](https://daily.dev/posts/dialog-animation-gotchas-eoqza9het) · RUBYLAND · 0 upvotes · 0 comments

---

Tags: [#ios](https://daily.dev/tags/ios), [#swift](https://daily.dev/tags/swift)

[View this post on daily.dev](https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"UIViewPropertyAnimator is Too Cute","url":"https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki"},"datePublished":"2026-08-23T12:21:45.232Z","dateModified":"2026-08-23T12:40:18.383Z","description":"An iOS developer more familiar with Android's animation APIs investigates why UIViewPropertyAnimator's animated properties (like alpha) don't match the actual...","image":"https://media.daily.dev/image/upload/s--OHB84bZF--/f_auto/v1722860399/public/Placeholder%2010","thumbnailUrl":"https://media.daily.dev/image/upload/s--OHB84bZF--/f_auto/v1722860399/public/Placeholder%2010","isAccessibleForFree":true,"articleSection":"Square","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Square","logo":"https://media.daily.dev/image/upload/s--QZPKZNBW--/f_auto,q_auto/v1787487457/logos/publicobject?_a=BAMAMicg0","url":"https://daily.dev/sources/publicobject"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ios,swift","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Square","item":"https://daily.dev/sources/publicobject"},{"@type":"ListItem","position":3,"name":"UIViewPropertyAnimator is Too Cute"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/uiviewpropertyanimator-is-too-cute-cdxqkwnki#faq","mainEntity":[{"@type":"Question","name":"Why does button.alpha read as 0.0 immediately after calling startAnimation() on a UIViewPropertyAnimator even though the fade animation takes a full second to visually complete?","acceptedAnswer":{"@type":"Answer","text":"UIViewPropertyAnimator immediately sets the property to its target value in the model layer, so button.alpha reads 0.0 right after startAnimation() returns and on every frame afterward, even while the pixels are still visually fading. The animator captures the initial value and animates the presentation separately from the underlying property. daily.dev surfaces deep dives like this for developers debugging subtle UIKit animation mismatches."}},{"@type":"Question","name":"How can I inspect the actual mid-animation value of a UIKit property instead of its already-updated model value?","acceptedAnswer":{"@type":"Answer","text":"Use CALayer.presentation(), which returns a copy of the layer holding the values currently being rendered during an active animation, unlike the model layer's properties which jump to their final values immediately. This was pointed out as the mechanism behind why UIViewPropertyAnimator's alpha property doesn't match the drawn pixels mid-animation. Developers untangling UIKit and Core Animation internals can find similar findings on daily.dev."}}]}
```

