By Developers, For Developers

Historical errata for Core Animation for Mac OS X and the iPhone

PDF PgPaper PgTypeDescriptionFixed onComments
11TYPO

“In this chapter you’ll see a simlified version of this action.”

simlified > simplified

2008-02-18
7TYPO

First paragraph:
first time you saw the Maignification
— should be
first time you saw the Magnification

2008-02-06
7TYPO

First paragraph, last sentence:

“more and more natual” — should be natural

2008-02-06
8TYPO

Second paragraph:
“80% of the benifits” — should be benefits.
“latter chpaters” — should be latter chapters.

Third paragraph:
“Its actually quite easy” — should be “It’s actually quite easy”.
“various types of animations that are avalible” should be “various types of animations that are available”.

2008-02-06
9TYPO

Second paragraph:
“looks like its placed behind” should be “looks like it’s place behind”.

Third paragraph:
Missing space after page number in last sentence.

2008-02-06
11TYPO

First sentence - missing “and” — [and] it would just disappear

2008-02-06
15TYPO

Second paragraph, third sentence. “its of course obvious” should be “it’s of course obvious”.

Fourth paragraph, last sentence. “its so complex” should be “it’s so complex”.

Last paragraph, “[…] implement animation ourselves its all encapsulated […]” should be something like “[…] implement animation ourselves; it’s all encapsulated […]”

2008-02-06
18TYPO

Second paragraph: “(for examples sake and to make the math easy lets use […]” should be “(for example’s sake and to make the math easy let’s use […]”

2008-02-06
19TYPO

Second-last paragraph: “[…] in detail in Chapter Chapter 5” - extra word.

2008-02-06
8TYPO

Third paragraph: “arrises” should be ‘arises’

2008-02-06
19TYPO

Third paragraph: “…why and unexpected…” should be “…why an unexpected…”

2008-02-06
22TYPO

Fourth paragraph: “Figure Figure 3.1” - extra word.

2008-02-06
23TYPO

First paragraph: “key frame’s” should be “key frames”

2008-02-06
23TYPO

Third paragraph: “animations duration” should be “animation’s duration”

2008-02-06
23TYPO

Fifth paragraph: “Figure Figure 3.1” - extra word.

2008-02-06
24TYPO

Second paragraph: should be new sentence after “…supply that to the animation”

2008-02-06
9SUGGEST

Adding “on page xx” after every mention of a chapter makes this page harder to read than it needs to be. In the first few paragraphs it is tolerable but in the next to last paragraph, which begins “In Chapter 8…” the constant mention of page numbers makes the paragraph impossible to follow. As a matter of fact, I would replace all mentions of specific chapters in this paragraph with “in the preceding chapters”

2008-02-06
16SUGGEST

First sentence of section 2.3; I think you need a comma:

“As we have seen, ”

2008-02-06
28TYPO

“… looking at filters latter in Chapter 7, Core Animation, on page 73 we will make use of the keyPath to animate the properties of the filter.”

“latter” should be “later”

2008-02-06
28TYPO

“Any of the animations we have seen thus far can be put into groups. We
an add a keyframe animation …”

Should read, “… we can add …”

2008-02-06
28TYPO

“It starts at the center of the screen grows and rotates then retur ns to its original position.”

Good writing means (among other things) dropping as many commas as possible. Modern dogma would have a writer believe he should simply drop all commas unless absolutely required. This is wrong. The sentence above is difficult to parse quickly as breaks are not demarcated by that all-important punctuation mark:

“It starts at the center of the screen, grows and rotates, then returns to its original position.”

You’re enumerating a list of actions. Use commas.

2008-02-06
30TYPO

Suggestion on formatting: Objective-C method signatures are not usually usually shown in this format:
groupAnimation:( )

Usually, they’re shown this way:

-groupAnimation:

… or …

groupAnimation:

Another example would be [someObject doSomethingWithSomeArgument:arg1 someOtherArgument:arg2] :

-doSomethingWithSomeArgument:someOtherArgument:

Putting parentheses on this latest example would look funny:

-doSomethingWithSomeArgument:()someOtherArgument:()

… or incorrect …

- doSomethingWithSomeArgument:someOtherArgument:()

I suspect you’re using a style sheet which is automatically appending the “()” for text marked as method signatures, so that would be easy enough to fix. :-)

2008-05-29
79SUGGEST

I’m not sure if it’s just my setup;

It looks like you are using Garbage Collection in your example code, but you haven’t enabled GC in the build settings of these examples.

2008-02-18
45SUGGEST

“And keep in mind that there are QuickTime movies of all
the animations on the books site if you want to see the animations in
action.”

This seems completely out of place. This should probably be in a sidebar. Better yet, something like the “Download …” tags could be used to link to the animations.

2008-02-18
45TYPO

“Now lets look at the code need to make this happen. Lets start with the
code that makes the views animate.”

1 - The word “lets”, though defined as an archaic spelling, is really a contraction of “let us”, which should be spelled, “let’s”.

2 - The word “need” should be “needed”.

3 - While I’m on it (lots of others have posted typos on this too), you should go through every “its” and “it’s” and make sure they’re the right ones (instead of “their” the right ones or “there” the right ones :-D).

2008-02-18
48SUGGEST

“In this chapter we are going to
see what additional features we gain by making our views layer backed.
< paragraph break >
In this chapter we are making the first step of a transition from Cocoa to
Core Animation. Core Animation opens ups amazing visual treatments
like Cover Flow but before we go there we need to understand adding
layers to our views and how that changes our code. In this chapter
we are going to get started on the jour ney from the Cocoa oriented
animation that we have studied thus far into Core Animation Layers.
Completing this jour ney will see us through the end of the book. ”

This is very wordy. You start three sentences with, “In this chapter” and in each of those three sentences you say almost the same thing. Consolidate the first “In this chapter” sentence with the last paragraph and summarize the points you make therein.

2008-02-06
49TYPO

“So we can still use many of the approaches we are
accoustomed to in Cocoa.”

“accoustomed” should be “accustomed”

2008-02-06
49TYPO

“This first step along the jour ney is about backing our view’s with lay-
ers …”

The word “view’s” should be “views”; the view doesn’t own anything in this sentence. :-)

2008-02-06
49TYPO

(Not just page 49; I had to give at least one page)

All instances of the word “journey” seem to have a hidden space in them … they’re not visible when reading the PDF but when pasting errata, the plaintext form of the string shows it. It’s also apparent when you select the text in the PDF (there’s a little ‘hump’ over the ‘n’).

2008-05-29
16TYPO

You have: “As we have seen animation of Cooca classes is performed…”
Cocoa is misspelled in this sentence.

2008-02-18
16SUGGEST

You have: “In this section we are going to look at what this proxy is and how it works. Including how the …” Try: “In this section we are going to look at what this proxy is, how it works, how the animator finds…”

2008-02-18
17TYPO

“animationForKey:( ) first looks in the receivers[*] animations dictionary” *change receivers to receiver’s (possession)
“If not then the class method defaultAnimationForKey:( ) is called that animation is returned.” Did you mean “…is called so that an animation is returned.” ?

2008-02-18
8TYPO

“In fact we can get 80% of the benifits…”, should be benefits

2008-02-18
8TYPO

Third paragraph: “…animations that are avalible…”, should be available

2008-02-18
6TYPO

You need to pay more attention to the difference between it’s (= it is or it has) and its (indicating possessive)

2008-04-22
21TYPO

“..we did not point it out the basic animation…” should be “…we did not point out that the basic animation…”

2008-02-18
14SUGGEST

In BaseView, targetFramePosition doesn’t need to be a member variable.

2008-02-18
25ERROR

As far as I can see, the following is true only for images of a specific size:
“we are initializing the mover view (the NSIm-
ageView that holds our picture) to the >>>center<<< of the screen”

2008-02-18
26SUGGEST

in heartPath: first building the path on constant values and scaling it afterwards to fit right into frame may be more readable.

2008-02-18
31TYPO

mouseDown: in the first paragraph after code listing need to be changed to keyDown:

2008-03-26
30TYPO

“The groupAnimation:( ) method on line 1 creates the group and configures
it so that is can be put into the animations dictionary of the mover view.”

“is” should be “it”
(I also second the previously reported erratum that Obj-C methods shouldn’t have parens.)

2008-03-26
30TYPO

“The duration we have discussed earlier so lets get into the autoreverses property.”

Missing apostrophe in “let’s”, and starting with the direct object makes the first half of the sentence awkward.

2008-03-26
30TYPO

“In other words if one of the contained animations were to set the autoreverses property to NO it would be ignored in favor of the groups setting.”

“groups” should be “group’s”. There seem to be many missing apostrophes (this is the second in this paragraph), so I’ll stop reporting each one. Definitely have the copy editor focus on catching them.

2008-03-26
33TYPO

“Which usually makes for a nice smooth animation. If we use our own animations however we need to be careful to make sure the animations idea of initial value and the view’s current value are the same. If they are not we can get ’choppiness’ at the front or back of our animations.”

The first sentence is a fragment and should be appended to the previous sentence with a comma. As a general suggestion, it feels that you could use more commas overall. For example, commas around “however” and after “If they are not” would help the reader with the flow.

The main reason I stopped here, however, was because I had to reread the second sentence 3 times. It’d be easier to parse if it were more parallel and the verbs weren’t split up; something like: “If we use our own animations, however, we need to be careful to make the animation’s initial value and the view’s current value the same” or even “…set the animation’s initial value to the view’s current value.”

Also, there’s a missing apostrophe in “…animations idea of…” (Hope I’m being more helpful than annoying.)

2008-03-26
34SUGGEST

I really like your warning about setting an animation’s initial value to a value other than the view’s initial value, but you don’t mention that the easiest way to avoid this problem is to simply avoid setting an initial value for the animation.

If I understand the docs correctly (“Setting Interpolation Values” section at the top of the CABasicAnimation class reference), the animation will just use the view’s current setting as its fromValue/toValue if either of these are nil.

2008-03-26
22TYPO

The time scale of figure 3.1 doesn’t match the text. The text says the points are at 0.25, 0.50, 0.75 but the figure looks more like 0.1, 0.5, 0.9 (assuming the green box is supposed to extend from 0 to 1 — as it appears to do for the other figures).

2008-03-26
49TYPO

“Things like, only draw when necessary, only draw what has actually changed, when appropriate I’ll make sure to point out when to look out for this issue.”

This should be two sentences; the first half is just a fragment, so it may need to be reworded.

2008-03-26
52TYPO

“For example consider the doc changes that were part of Leopard.”

“doc” should be “dock” (insert bad medical pun here)

2008-03-26
60TYPO

“A background filter might be used to emphasis a view by softly blurring the background”

“emphasis” should be “emphasize”

2008-03-26
58SUGGEST

Hi here are some questions I’d like to see answered in the final version:

1) How can you handle large layers (eg larger than max texture size) using CATiledLayer. Can you do it with layer backed views?

2) How can you control the drawing order (back to front) of layers that are not in the same layer hierarchy? This might be the case if you have a view hierarchy where some leaf views are layer backed, but the superview isn’t.

Thanks,
martin@norrkross.com

2008-05-29
77ERROR

On lines 23 & 24 you create two variables named width & height. The names are a bit confusing because these variables don’t actually represent the width and height of anything. Instead, on p. 79 you use them as the x and y coordinates of the origin of the layer’s frame, so they might be better called something like x & y or xOffset & yOffset.

2008-03-26
81TYPO

“Instead of using a straight NSString and therefore having a single font and color we could intead use an NSAttributedString and then we could use all the expressive power of the attributed string.”

I wish this were true, but unfortunately CATextLayer appears to limit its support of text attributes to those that correspond to its properties (foreground color, font, font size, and alignment — I haven’t tested all the other attributes, but it’s definitely ignoring stroke and shadow). Since Apple’s documentation doesn’t make this clear (bug filed), it would be a useful gotcha to confirm and highlight in the book.

2008-03-26
14TYPO

Maybe “Build and run the application and press any button” should read “Build and run the application and press any key”?

2008-03-26
17TYPO

missing apostrophe:
animationForKey:() first looks in the receivers animations dictionary and
if an animation is found it is returned.

should be receiver’s

2008-03-26
24TYPO

should be “it’s” - it is

Basically its any property that is typed,

2008-03-26
33TYPO

it’s - So as its

2008-03-26
24TYPO

arrayWithObjects: needs a nil at the end of the list

2008-03-26
13TYPO

The code formatting is a bit messed up. It doesn’t seem to be using consistent spacing. One code example on this page reads:

- (BOOL)acceptsFirstResponder {
return YES;
}

- (void)keyDown:(NSEvent *)event {
[self move];
}

The former method body has two spaces before it, whereas the latter has eight (or a hard tab that has been mapped to eight spaces).

It should continue to use the K&R brace style that it already does, but four-character indentation with spaces rather than tabs is traditional for Cocoa code. Keeping all of the code in the book consistent will this will make it much, much easier to read.

2008-03-26
13TYPO

Cocoa has no method named “acceptsFirstResponder()”. The proper way to write this is “-acceptsFirstResponder” to refer to just the selector, or “-[NSResponder acceptsFirstResponder]” to also specify its class.

Furthermore, the name of a method ALWAYS includes the colon. There is no “keyDown()” method in the first example. The proper name of the method is “-keyDown:” including the trailing colon.

This is long-standing convention that any book on Cocoa-related technologies must follow. Otherwise it makes it look like the author does not understand Cocoa or Objective-C, which I know is absolutely not the case for Bill.

2008-03-26
13TYPO

“You will also need to override the following two methods to handel key-
board events.”

“handel” should be “handle”

2008-03-26
17SUGGEST

The notation of method names in text is inconsistent with those in Apple documentation and other books like Cocoa Programming For OS X (Hillegass). Instead of referring to the “animationForKey:()” method as is done, it may be better to note it as “animatonForKey:” in a different font (possibly even prepending them with a - or + for increased clarity), saving confusion with C functions like NSMakeRect(), which are notated properly.

Love the book!

2008-05-29
1TYPO

The parens at the end of every method is a bug in the typesetting and will be fixed before the book is finalized. Just wanted to let everyone know.

2008-05-29
109ERROR

On page 109 you mention that “[you] will also touch on how to add a default animation for [our] custom properties.” However, I don’t see where this is covered. The closest the text comes is on pages 110 and 111 where you cover defaultActionForKey: method. However, in my experience, this method is not called for “custom properties”, only properties that are defined in Apple’s documentation as animatable.

I would love to be wrong in this. I think that CALayer should better support custom animatable values.

2008-06-30
7TYPO

"Its not ‘just’ eye candy…’

Its should be It’s

2008-04-22
8TYPO

“Just tell the view or window that you want animation and change a property Core Animation takes care of the rest of the details and smoothly animates the change from the old value to the new value.”

Needs period after property and before Core Animation

2008-04-22
9TYPO

“Its actually quite easy to pick up”

Should be It’s.

2008-04-22
10SUGGEST

Why put page numbers in? Doesn’t seem to serve any purpose since I’m not likely to flip to the chapter while reading the quick overviews and we have a table of contents. They also seem to make it harder to read, especially the chapter 8 paragraph.

2008-04-22
10TYPO

Not really a typo per se, but you are missing the Chapter 9 summary on this page.

2008-04-22
10TYPO

“Core Image is apples way of doing image procesing on the GPU”

Should be “Apple’s”

2008-04-22
11TYPO

“Junk is the raw materials of a great invention…”

materials should be singular since junk is singular.

2008-04-22
9SUGGEST

Some sentences are very long which require much more attention when reading. This makes reading technical info harder. For example:
“Simply by calling one method we can gain a huge amount of animation power and we don’t even have to really learn Core Animation, we can gradually move into it as need arises instead of having to wrap our heads around a whole new framework just to get started.”

Perhaps this can be broken into two sentences. At the least, it needs a semicolon between “Core Animation” and “we”.

I’d suggest taking a look at any sentence that spans more than 3 lines.

2008-04-22
10TYPO

" Core Animation API’s.Chapter 3"

Missing space before “Chapter 3”

2008-04-22
1SUGGEST

Would it be helpful to add a references section? I really find these sections useful for a single subject book like yours. It gives me some (hopefully) advanced places to go when I reach the end of the book.

I’ve found the “Programming with Quartz” book helpful since it talks about loading CGImageRefs (which are set at the contents of the layer). Also helpful would be a few web sites (the Apple GeekGameBoard example is very helpful for animation transactions for dragging layers around). Maybe mention of the cocoadev wiki and Apple’s mailing lists.

I wonder if the new Aaron Hillegass update is going to mention Core Animation? Perhaps that could be listed as an additional source if you could get an advance copy to look at.

2008-05-29
1SUGGEST

Can you add a section on who you are, why you are interested in Core Animation and perhaps a link to your site (or another method of getting in touch)?

It would also be helpful to put in a paragraph or two on what skills I should have before reading this. Objective-C and Cocoa seems like a must, but how much depth do I need with them before starting. Also what versions of Xcode and Interface Builder have been used with the examples. If a CD is not to be put with the book, we’ll also need a url to download the examples from.

Thanks :-)

2008-05-29
28SUGGEST

The code download and the generated PDF seem out of sync. You’re referring to code KeyFrameMoveAView but it’s located in CocoaAnimation and without an XCode project. Would be great to have the code updated so that I can just compile it and see how the text translates to real life

2008-05-29
29SUGGEST

I disagree with not detailing the Quartz path more. I came to this book to learn how to do animations, and a path seems to me like a logical part of that. So give an intro and then refer to a book. I would like to know more about NSMinY, NSMinX, NSHeight and NSWidth, for instance why you don’t say frame.size.height or frame.origin.x.

2008-05-29
31TYPO

A little bug in the code. Try holding ‘g’ down a bit (so that the animation stutters), then release it and see what position it ends in. And no, it’s not the original position :-)

2008-04-22
31SUGGEST

I think it would be nice if you’d add a comment about why you’re using CGFloats rather than regular floats.

2008-04-22
36TYPO

There’s an equivalent retrigger problem just like in the heart-shaped bounce animation. It becomes very apparent if you add your suggested code (I’ve added a delay to make it very visible)

- (CATransition *)animation {
\tCATransition *trans = [CATransition animation];
\ttrans.type = kCATransitionMoveIn;
\ttrans.subtype = kCATransitionFromTop;
\ttrans.duration = 5.0f;
\treturn trans;
}

and the suggested
\t\tself.animations = [NSDictionary dictionaryWithObject:[self animation] forKey:"superview"]; \t\tself.animations = [NSDictionary dictionaryWithObject:[self animation] forKey:“subviews”];
in initFrame:

Hit the r key with 1 second intervals and you’ll see a jumping effect on the picture that should be fading out. It jumps to being the other picture.

2008-04-22
113TYPO

in the grey box:
“… within the UI space alloted to it.” shouldn’t this be “… within the UI space ALLOCATED to it.” ?

2008-04-22
12OK

Second last paragraph ‘When you press any key the picutre will shrink’

2008-05-29
12SUGGEST

Pages beginning a chapter don’t have a link to report erratum

2008-05-29
15TYPO

The isRigth = !isRight code fragment is indented too far

2008-05-29
1SUGGEST

Someone else mentioned earlier having discussions of CATiledLayer, which is something I need to use, and something probably others will be interested in. However, I don’t see it in the Table of Contents. Since Apple has nothing on their site on how to use this class, its a great opportunity for you!

2008-05-29
153TYPO

Quart instead of Quartz in first Paragraph of section 11.2

2008-05-29
14TYPO

The indentation of the -initWithFrame: and -keyDown: code fragments is inconsistent.

2008-05-29
19SUGGEST

It would be nice if the sequence diagram in Fig 2.2 were expanded to show the entire animation search process discussed in the text. As it stands it only shows the first couple of messages.

2008-05-29
114ERROR

‘scroll’ in figure 9.1 ought to be a CAScrollLayer rather than CALayer, although that is technically correct.

2008-05-29
69TYPO

“…keyPath notice that it’s set to backgroundFilters.torus.kCIInputWitdhKey.”

kCIInputWidth not kCIInputWitdhKey

2008-06-30
101SUGGEST

There is no code for the PhotoPop example provided for download in the current code archive, nor via the direct link in the pdf

2008-05-29
108SUGGEST

The LayerDrawing example is also missing from the code

2008-05-29
89ERROR

The image used to display the Y-Axis constraints uses kCAConstraintMinX instead of kCAConstraintMinY

2008-05-29
88TYPO

The X-axis constraint image has a caption of ‘Example layer tree’ which doesn’t seem to make sense

2008-05-29
89TYPO

The Y-axis constraint image has a caption of ‘Example layer tree’ which doesn’t seem to make sense

2008-05-29
109TYPO

‘or return, and NSNull to signify that the search’ and -> an

2008-05-29
127ERROR

The quote used to start Chapter 10 is the same as the quote used in Chapter 7.

2008-05-29
85ERROR

Using the size setting of boldSystemFontOfSize doesn’t seem to have any effect on the output rendering. The font always gets the default size of 36.0

I had to set layer.fontSize = 18; setting on the layer to get the font size to actually change.

2008-05-29
13SUGGEST

The Edison quote is “To invent, you need a good imagination and a pile of junk.”
Perhaps that should be included instead of “As Edison said, junk and imagination are required to invent.”

2008-05-29
15SUGGEST

It would be nice if the expressions were nicely spaced.

NSMakeRect(0.0, 0.0, frameX / 4, frameY / 4)

instead of

NSMakeRect(0.0,0.0,frameX/4,frameY/4)

2008-05-29
29ERROR

You wrote “bounce is called from keyDown:( ) when any key is hit”. This is not true. In the current code example, bounce is called when the ‘b’ or ‘B’ character is hit.

2008-06-30
31SUGGEST

The GroupAnimation example reports warnings. I would suggest declaring the “- (CAAnimation *)frameAnimation:(NSRect)aniFrame” and “- (CABasicAnimation *)rotationAnimation” methods in GroupAnimationView.m into the header file. To make this work, also move the QuartzCore import into the header file.

2008-06-30
33SUGGEST

In the KeyFrameMoveAView example, you catch both ‘b’ and ‘B’. In the GroupAnimation, you only catch the lower-case ‘g’. This feels inconsistent.

2008-06-30
159SUGGEST

CALayer’s +(id)layer; is almost certainly defined as:

+(id)layer {
return [[[[self class] alloc] init] autorelease];
}

therefore, you should never override it, but instead override init:
- (id)init {
self = [super init];
if (self) {
layer.animate = YES;
layer.asynchronous = YES;
}
return self;
}

since the file CALayer.h says that init is the default initializer, this will cause programs that use [[myLayer alloc] init] to work, while putting code in +(id)layer; will cost them hours. (Guess how I know.)

2008-06-30
23TYPO

Second paragraph, first sentence reads “Up to this point, we have seen only AppKit APIs, but in this chapter we
are going start to mix in the animation classes…”.

I believe that should be “…are going to start to mix…”.

2008-06-30
23SUGGEST

Paragraph 3, sentence 2 makes reference to the “CocoaAnimation” sample on page 12. Jumping back to page 12 and reviewing the text there, I do not see a single instance of the sample being referred to as “CocoaAnimation”. That text exists as part of the path to the sample, but the actual project is entitled “FirstAnimation”. This could create some confusion (it did for me).

I would recommend changing the text in Chapter 3, pg 23 to refer to the “FirstAnimation” sample, or refer to the project at some point in Chapter 12, pgs 12-13 explicitly by the name “CocoaAnimation”.

2008-06-30
23SUGGEST

Paragraph 4, sentence 1 uses the phrase “suits the bill”. Should this not be “fits the bill”? “Suits the bill” seems awkward.

2008-06-30
23SUGGEST

I’d suggest making a section for “Basic animations” before “3.1 Keyframe Animations”. Perhaps just inserting a section header between pg 23 paragraphs 2-3 would accomplish the goal. This would make it clear that the basic animation is a proper animation type, even though it was used in the previous chapter. It would also then show up in the bookmarks list, which would make it more obvious when quickly scanning to get an idea of all the available animation types.

2008-06-30
24SUGGEST

First paragraph of section 3.1, last sentence reads “… and exactly the length of time we want it to have that value.”

This makes it sound as if the change to the property is temporary, and it will be set back to the original value after some elapsed time. It may be more clear to say something like “..and exactly the length of time over which that property is applied” or something which indicates that you arrive at the specified value at the end of the time period.

2008-07-14
28SUGGEST

The first paragraph of text on pg 28 refers the reader to pg 18 of section 2.3 as a reminder of being able to add custom animations to the animations dictionary. Section 2.3 does not seem to clearly express that one can add to the animations dictionary. It seems (to me) to only express that the animations dictionary is searched, but not that it can be modified.

Specifically this text on page 18: " animationForKey: first looks in the receiver’s animations dictionary, and if an animation is found, it is retur ned. If not, then the class method defaultAnimationForKey: is called, and that animation is returned." seems to say nothing about adding custom animations.

Then the final paragraph of section 2.3 alludes to adding custom animations, but does not go into any detail on how to do so: “As we move into our discussion of animationobjects, remember the process that the animator uses to find the animations. We will take advantage of this process to eventually attach our own animations to our views and windows to create our own custom animation effects.”

2008-06-30
14SUGGEST

Indentation in the code examples as printed in the book — is way off. In the Xcode it’s displayed correctly only with Tab width: 2, Indent width: 2.

To get them looking correctly in the book as well, I think all examples should either be converted to use Tab character for indentation everywhere, or some internal setting should be used.

2008-06-30
40TYPO

Computers are incredibly fast, accurate, and stuipd.

Should be stupid.

2008-06-30
123upSUGGEST

Figures 9.3 - 9.7 have some “fuzzy” text. It seems some of the text is actually bitmap-text (e.g. “CALayer (image1)” looks fuzzy)

2008-07-14
34SUGGEST

In GroupAnimationView.m, in function “keyDown”, we setoff a group animation by typing ‘g’, which triggers:
“[[mover animator] setFrameRotation:[mover frameRotation]];”

i’ve found that if you press ‘g’ again in the middle of the animation, it restarts (expected) however when it finishes the frame then resets it’s rotation to whatever angle it was as when that second ‘g’ was pressed, because [mover frameRotation] wasn’t zero at the time the second ‘g’ was pressed. at that point your frame is stuck sideways until you changing it by hitting ‘g’ twice again, but still it’s hard to get it back to the starting point with out quitting and relaunching. hitting ‘g’ to kick it off again then moves it back to 0.0 in a choppy way, and re-animates from 0.0 to 45.0, then back, then back to whatever angle you were at when you hit the second ‘g’.

if you swap [mover frameRotation] with just 0.0f you avoid this behavior.

2008-07-14
46TYPO

file AnimationTiming/CustomAnimationTiming/MyView.m
function moveAnimation in the pdf has the CABasicAnimation object called “moveAnimation” however source code supplied calls it “fadeAnimation”. source also does not have “moveAnimation.duration = 2.0f;” (or fadeAnimation.duration for that matter)

without setting the duration the animation is terribly choppy, can’t visualize the animation going on the curve. adding it in makes it very obvious.

2008-07-14
98ERROR

method - (void)mouseDown isn’t found in code downloaded from website. Furthermore, even if added the method will not work unless the photolayer is named “photo” in the setup method.

2008-07-14
16ERROR

The suggested code change won’t compile, because targetFramePosition is never declared. Also, it’s a tad easier to edit by adding [mover animator] in each case of the if statement, even if it’s less tidy.

2008-07-14
33SUGGEST

You say, " We discussed the duration earlier, so let’s get into the autoreverses property." However, I couldn’t find any substantial discussion of the duration property. My biggest question was, are those seconds, or some unitless value that can be scaled in time? (The line before says seconds.)

2008-07-14
162OK

Suggestion for Example code.
I think it would be helpful to prefix the top level folder with the chapter number. Makes it easier to find the sample code being talked about.

2008-07-14
56TYPO

Box refers to next chapter, but there are two chapters in between.

2008-07-14
130ERROR

“It has the ef fect of making things in the layer
appear bigger (positive scaling factors) or smaller (negative factors).”
That’s confusing. I think “greater than 1” and “less than 1” would be more accurate.

2008-07-14
56TYPO

Correction to my errata: There is one chapter in between.

2008-07-14
50TYPO

The description of the example states, “As it arrives, the snowman animates from the center to the left side of the screen.” It should be, “As it arrives, the snowman animates from the center to the right side of the screen.”

2008-09-29
68ERROR

In the example project the Custom View in the Background Filtered View is of type SimpleView which doesn’t exist. It should be changed back to being a standard NSView.

2008-09-29
70ERROR

The description of the example project mentions a subview called SimpleView. The SimpleView class does not exist in the example project so it either needs to be added or the view need to be changed to use the standard NSView class and the reference to SimpleView removed from the descriptive text.

2008-09-29
74ERROR

In the example project the Custom View in the Composited View is of type SimpleView which doesn’t exist. It should be changed back to being a standard NSView

2008-09-29
87TYPO

In the first paragraph, when explaining the color creation code, the black method is on line 9, not line 1.

2008-09-29
127TYPO

The origin of the frame has moved from {25, 10} to {35,20}
should read:
The origin of the frame has moved from {25, 10} to {35,10}
to match figure 9.7. The figure is correct as the y component of the anchorPoint did not change.

2008-09-29
110ERROR

The provided source files don’t include the filecode/CoreAnimationLayers/TiledLayer/Images/SilverGreen_0.25.png which causes an error when trying to compile that project. Deleting the reference from the project seems to fix things though.

2008-09-29
110OK

I don’t see any info on UIView classes & Layers.
How does the UIView differ from the NSView?
How do you perform the examples within a UIView 2.1 environment (particularly ‘cover flow’)?

We need more iPhone coverage.

(Dave says: I agree, but unfortunately Apple doesn’t. Under the terms of the NDA signed by Bill, he can’t discuss iPhone APIs)

2008-09-26
1ERROR

Stage 5 source code:

Line Location Controller.m:56: warning: no ‘-setNeedsLayout’ method found

2008-09-29
70+SUGGEST

The “Pointillize” filter is constistently and incorrectly referred to as “Pointalize”. This doesn’t seem like a simple typo, but even if it’s intended by the author, I find it quite grating.

2009-05-27
87OK

“We can do a lot more with CATextLayer than this simple example
shows. Instead of using a straight NSString and therefore having
a single font and color, we could instead use an NSAttributed-
String, and then we could use much of the expressive power of
the attributed string. As we said in the main text, the CATextLayer
is not a full-fledged layout engine, but it is capable of doing
a lot more than simply displaying a string in a single font and
color.” — this redundant section looks like an overlooked artifact of the editing process.

2009-05-27
26OK

Top of the page. You need to find 14 positions between the starting and ending positions for the animation. The starting position is 0 and not counted as one of the animation positions. There are 15 time periods so each needs a new position at its end (the final one and the 14 intermediate positions).

2009-05-27
14OK

In my reading of your book so far, you have changed tenses from ‘we’ to ‘I’ and ‘you’ several times.

This makes the book hard to read. Who is the ‘we’? The author and the reader? But only I am reading the book, not the author.

There are many works of a technical nature that do not have to resort to ‘we’ and ‘you’ in order to impart information.

Also, at the top of page 15, you introduce a certain ‘Daniel’. Daniel who?

Regards,

Karl

2009-05-27
31OK

It would be nice to have a complete sample code for the chapter “3.2 Keyframe Animations”

2009-05-27
33OK

> In this first bit of code, we are initializing the mover view (the NSImageView
> that holds our picture) to the center of the screen, and then on line 17 we add > the animation to the view.

Actually, mover view is located not in center of the screen but 3/8 of it (according to sample code)

2009-05-27
39TYPO

> You might notice that if you hold down a key or hit one during the animation,
> then the results might not match your expectations. We discussed this in more
> detail on page 34.

But there is no any discussion about key press on page 34!

2009-05-27
40TYPO

> To show the transitions in action, we have another simple example. In
> this example, we have two image views that we will transition between
> by hitting the ’r’ key.

Sample code on this page accepts all keys not just ‘r’.

2009-05-27
40OK

> Now, there is a bit of a trick here. As mentioned earlier, layer backing
> has to be tur ned on for the transitions to work properly. That has been
> done for you in the NIB file, though, so you don’t have to mess with it.
> To see where this is switched on, choose the TransitionView in Inter face
> Builder and hit Command+2 to see the animation inspector.

I don’t see any layer backing properties in animation inspector. Could you provide a screenshot?

2009-05-27
48TYPO

Sample code returns not defined variables (cx1, cy1, cx2, cy2) instead of already defined (c1x, c1y, c2x, c2y).

2009-05-27
53TYPO

> That brings us to the setDefault: method on line 1.
Actually, the method called makeDefault: in the sample code on the bottom of this page

2009-05-27
76TYPO

The method - (void)pointalze appears to be a typo, but further references to this method in the other code samples on this and neighboring pages spell it the same way; it should be pointalize (or probably even pointillize as mentioned in another erratum report).

2009-05-27
76TYPO

The first paragraph refers to the buttons in the figure 6.2 as “Heavy Pointalize” and “Light Pointalize” but the buttons say “More Pointalize” and “Less Pointalize”.

2009-05-27
166ERROR

In the final paragraph, “animationForLayer:forKey:” should be “actionForLayer:forKey:”.

2009-05-27
57OK

On page 57, “Chaining Animations,”
I find:
“There’s more flexibility in chaining animations when we’re using strictly
layers in a layer-hosting view.”

The phrase “when we’re using strictly layers” seems awkward.

Try something like this:
“The layers of a layer-hosting view allow us to chain animations more flexibly.”

Also, the line above seems awkward, too.
" You can, however, attach a delegate to the group and get notification of the group completing. "
Try:
" You can, however, attach a delegate to the group. The delegate will receive a notification when the group completes."

2009-05-27
74TYPO

Figure 6.2 has the button labels “More Pointalize” and “Less Pointalize” whereas the text on the page refers to “Heavy Pointalize” and “Light Pointalize”

2009-05-27
82TYPO

The example project QCBackground starts without the image layer and responds only to a specific key a/A. This is confusing as there is no reference in the book to using the “a” key to toggle the image, infact the implication is that running the demo will show the composited image.

2009-05-27
65TYPO

pointalize should be pointillize

2009-05-27
67TYPO

“controls is filtered” should read “controls are filtered”.

2009-05-27
67OK

Use Objective-C 2.0 conventions consistently for your code throughout the text, e.g. use self.bounds instead of [self bounds].

2009-05-27
71TYPO

Change “pointalze” to “pointillize”.

2009-05-27
93TYPO

“gong” should be “going”.

2009-05-27
40OK

How about some feedback from the author about technical errors? If you don’t provide feedback for errata, you soon won’t get more errata.

2009-05-27
66ERROR

“The only time we need to turn on layer backing is if we want alpha, center rotation, filters, or a shadow on our view.”

If you want to do transitions, you also need layer backing.

2009-05-27
36ERROR

Lines 8, 9, 10 and 11 of initWithFrame: do nothing and should be removed.

34SUGGEST

The call to CGPathAddLineToPoint() right before CGPathCloseSubpath() is unnecessary and should be removed.

5TYPO

P2.0 printing, June 2009; Version 2009-5-26

First sentence of 3rd full paragraph:

“…, there many Apple publications …” should probably read

“…, there are many Apple publications ….”

17-18ERROR

(Duplicate of #35393, reported on PDF page 26 seven months prior to the latest printing.)

The book indicates that x needs to be interpolated for 13 points between 0 and 0.25 (exclusive), giving 15 points (or 14 intervals) all total, but then performs the calculation for 16 points (or 15 intervals).

135ERROR

When I ran the Menu Layout Project first mentioned on PDF page 135, each time I pressed the down arrow, the next menu item would get all scrunched up against the previous, so by the end, they were all overlapping in the top of the view.

139ERROR

I got the same error as #41206 for the other two apps in “Layers in 3D” (Platter and Platter 3D Transform)…
“each time I pressed the down arrow, the next menu item would get all scrunched up against the previous, so by the end, they were all overlapping in the top of the view”

Also, the menu options didn’t have the effect shown in the figures.

34ERROR

In the bounce method of KeyFrameView.m, you’re animating from the current origin of mover’s frame. This works well enough so long as the animation isn’t interrupted before it can finish — in this case the origin of mover’s frame is constant. But if the animation is interrupted by a subsequent key press, the animation stops and the new origin for the frame is wherever the frame was before the interruption. The origin should be stored after the mover’s frame is initialized in the initWithFrame method and that stored value should be used in the bounce method.

18SUGGEST

Setting Up the Window
You’ll find an Xcode project and the necessary files in your code folder at code/CocoaAnimation/FirstAnimation/FirstAnimation.xcodeproj. Take a look at the NIB file, and you’ll see a single window that contains a BaseView object.

This is at the beginning of the book and i’ve been looking inside the book where i should go to download this, but there is no trace to be found, which makes this line an error.

code/CocoaAnimation/FirstAnimation/FirstAnimation.xcodeproj <— no downloadable code link.

Best regards.

45ERROR

“Computers are incredibly fast, accurate, and stupid. Human beings are incredibly slow, inaccurate, and brilliant. Together they are powerful beyond imagination.”

Does that even sound right? Surely not, do a quick search and you’ll find this: benshoemate.com/2008/11/30/einstein-never-said-that/

45TYPO

“The perceived speed of an animation gives subtle cues to our users about what has happened or is about to happen. Subtle clues are the ones that seem to make a deeper impression.”

Shouldn’t the second sentence begin with “Subtle cues”?

31NULLTYPO

When is the actual i phone five ( or even the successor of the iPhone 4) likely to be released? I personally lost my apple iphone a month ago, and I was wondering if I should just get the apple iphone 4 right now or wait for the iPhone 5… Additionally, I been told the i phone 4’s screen shatters simply if you drop it w/o in a situation. Is definitely that correct?

19ERROR

P2.0: The NSMakeRect() function is called a method one sentence after it’s introduced.

115ERROR

“We will discuss perspective transformations in the section on layers in 3D space.”

I consider a “perspective transformations” to be a rotation about the y-axis with a specified vanishing point. This is not discussed — only pushing it back on the z-axis.

115TYPO

Figure 37 caption is wrong. Same as Figure 36.

Categories: