-
Notifications
You must be signed in to change notification settings - Fork 48
/
611.srt
4393 lines (3216 loc) · 95.4 KB
/
611.srt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:00:11.026 --> 00:00:14.506 A:middle
>> In this session, my colleague
Mark Malone and I are going
00:00:14.506 --> 00:00:17.476 A:middle
to show you how you can take
your content to your next level
00:00:17.586 --> 00:00:20.506 A:middle
by adding your own
customization while maintaining
00:00:20.506 --> 00:00:21.306 A:middle
great performance.
00:00:23.426 --> 00:00:26.116 A:middle
So first, let me give
you a quick refresher
00:00:26.116 --> 00:00:30.446 A:middle
of what iBook Widget and
iAd are that are rich
00:00:30.446 --> 00:00:34.016 A:middle
in application running
on iOS device.
00:00:34.776 --> 00:00:36.366 A:middle
You can do a lot
interesting things.
00:00:37.216 --> 00:00:38.326 A:middle
Browse a gallery.
00:00:38.876 --> 00:00:39.786 A:middle
Play a game.
00:00:41.946 --> 00:00:43.136 A:middle
Amazing performance.
00:00:43.346 --> 00:00:46.676 A:middle
You may think this is
a native application.
00:00:48.146 --> 00:00:50.266 A:middle
However, if we look
under a cover,
00:00:51.256 --> 00:00:52.806 A:middle
there's this mini
website working
00:00:52.806 --> 00:00:54.846 A:middle
in HTML, CSS and JavaScript.
00:00:54.846 --> 00:00:58.706 A:middle
So there isn't any rocket
science involved here.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:01:00.206 --> 00:01:03.006 A:middle
So if you're a web
developer, it's good news
00:01:03.006 --> 00:01:05.506 A:middle
because you're experience
and knowledge is going
00:01:05.506 --> 00:01:07.676 A:middle
to be really valuable here.
00:01:08.936 --> 00:01:10.746 A:middle
Even if you're not
a web developer,
00:01:10.896 --> 00:01:14.216 A:middle
don't worry because iAd
Producer make it super easy
00:01:14.216 --> 00:01:14.956 A:middle
for everybody.
00:01:15.546 --> 00:01:19.596 A:middle
So here is what we
will learn today.
00:01:20.176 --> 00:01:22.576 A:middle
First, we're going to look
at content customization
00:01:23.176 --> 00:01:24.616 A:middle
and then we'll you
look at testing
00:01:24.616 --> 00:01:25.686 A:middle
and debugging techniques.
00:01:26.446 --> 00:01:29.176 A:middle
Lastly, we're going to cover
performance optimization.
00:01:29.766 --> 00:01:37.306 A:middle
So content customization,
how are we going to do that?
00:01:38.356 --> 00:01:41.746 A:middle
Under a cover, iAd Producer
create your content using
00:01:41.746 --> 00:01:42.616 A:middle
web technology.
00:01:43.396 --> 00:01:47.586 A:middle
And we can use the same exact
technology to do customization.
00:01:49.096 --> 00:01:52.516 A:middle
First, I'm going to show you
how we can do some custom style
00:01:52.876 --> 00:01:54.006 A:middle
using CSS.
00:01:56.516 --> 00:01:59.476 A:middle
In iAd Producer, I have
this project in development.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:02:00.216 --> 00:02:02.916 A:middle
This is image in
the center I would
00:02:02.916 --> 00:02:05.396 A:middle
like to apply some
custom style on.
00:02:07.796 --> 00:02:10.166 A:middle
First, normally, my
first approach is
00:02:10.205 --> 00:02:11.806 A:middle
to use the auto-inspector.
00:02:12.566 --> 00:02:14.476 A:middle
I can do a lot interesting
things there.
00:02:14.566 --> 00:02:17.746 A:middle
I can [inaudible],
apply a filter.
00:02:20.266 --> 00:02:24.166 A:middle
Behind the scene, like those
auto-inspector are applying
00:02:24.166 --> 00:02:25.206 A:middle
CSS property.
00:02:25.686 --> 00:02:27.086 A:middle
So you're already
writing custom CSS
00:02:27.086 --> 00:02:29.926 A:middle
if you are using this inspector.
00:02:30.546 --> 00:02:33.486 A:middle
It's just that iAd Producer is
doing it for you automatically.
00:02:34.816 --> 00:02:37.256 A:middle
But what if you--
what if you want
00:02:37.256 --> 00:02:40.316 A:middle
to use some CSS property not
backed by this inspector?
00:02:40.826 --> 00:02:42.726 A:middle
There are two ways
to go about it.
00:02:45.766 --> 00:02:48.896 A:middle
The first approach is
to import a CSS file.
00:02:49.576 --> 00:02:52.966 A:middle
In iAd Producer, you can
import CSS JavaScript file
00:02:52.966 --> 00:02:55.286 A:middle
like you could for
image and video.
00:02:56.416 --> 00:02:59.566 A:middle
And the CSS JavaScript
file will get bundled
00:02:59.566 --> 00:03:02.096 A:middle
with your content
automatically on export.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:02:59.566 --> 00:03:02.096 A:middle
with your content
automatically on export.
00:03:02.636 --> 00:03:05.286 A:middle
In this particular example,
00:03:05.286 --> 00:03:08.806 A:middle
I imported a file
called custom.css.
00:03:08.886 --> 00:03:12.616 A:middle
Let's take a look.
00:03:13.596 --> 00:03:17.896 A:middle
Inside that file, there's
a custom style setting skew
00:03:17.896 --> 00:03:20.606 A:middle
transform and it's
targeting object
00:03:20.666 --> 00:03:23.586 A:middle
with custom-transform
as a class name.
00:03:24.096 --> 00:03:26.886 A:middle
If I go back to my
project, at this point,
00:03:27.406 --> 00:03:29.646 A:middle
the image is not getting
the skew transform
00:03:30.006 --> 00:03:31.366 A:middle
because it's not having--
00:03:31.626 --> 00:03:34.506 A:middle
it doesn't have to right
custom CSS name applied.
00:03:35.436 --> 00:03:37.846 A:middle
To fix that, we can go to
the property inspector.
00:03:38.416 --> 00:03:42.656 A:middle
And there's a CSS class field
00:03:44.076 --> 00:03:46.056 A:middle
and I can type in
custom-transform.
00:03:46.656 --> 00:03:50.656 A:middle
At this point, if I do
export or assimilation,
00:03:51.396 --> 00:03:54.036 A:middle
I will find that the
skew transform is applied
00:03:54.066 --> 00:03:55.506 A:middle
to the image in the center.
00:03:56.476 --> 00:04:01.276 A:middle
So that's one way to apply
custom CSS in iAd Producer.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:03:56.476 --> 00:04:01.276 A:middle
So that's one way to apply
custom CSS in iAd Producer.
00:04:02.146 --> 00:04:04.066 A:middle
Now, we go and look
at another approach.
00:04:06.986 --> 00:04:09.536 A:middle
The second approach is
to use a Code Editor.
00:04:10.216 --> 00:04:14.286 A:middle
We can open the Code Editor
by clicking on the Code button
00:04:15.056 --> 00:04:16.656 A:middle
on the bottom toolbar.
00:04:17.266 --> 00:04:20.926 A:middle
Here is what the Code
Editor looks like.
00:04:21.776 --> 00:04:23.596 A:middle
You will see a list
of file on beside.
00:04:24.186 --> 00:04:28.586 A:middle
Global.css is a file that you
can add you custom CSS style
00:04:28.656 --> 00:04:30.546 A:middle
and make it available
to your content.
00:04:31.836 --> 00:04:35.416 A:middle
Global.js is the same idea
except uses the JavaScript file.
00:04:36.726 --> 00:04:40.386 A:middle
So previously, we applied a
class name to our image object
00:04:40.536 --> 00:04:42.466 A:middle
and we can use it right
here in Global.css.
00:04:42.466 --> 00:04:44.966 A:middle
And here's an example.
00:04:46.246 --> 00:04:50.056 A:middle
Here's an example of pocketing
an object by its class name.
00:04:51.756 --> 00:04:54.776 A:middle
We can also target the same
object by its unique ID.
00:04:54.936 --> 00:04:56.276 A:middle
Let me show you how that works.
00:04:56.646 --> 00:04:59.916 A:middle
So back to our project.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:05:01.046 --> 00:05:04.796 A:middle
iAd Producer automatically
generate a unique ID
00:05:04.826 --> 00:05:08.226 A:middle
for every single object
by combining the page name
00:05:08.226 --> 00:05:10.156 A:middle
and the object outlet
name with a dash.
00:05:10.666 --> 00:05:13.606 A:middle
Let's take a look
at this example.
00:05:14.256 --> 00:05:18.446 A:middle
In this project, we have
a page called Introduction
00:05:19.126 --> 00:05:21.456 A:middle
and the object outlet
name is "curiosity".
00:05:22.606 --> 00:05:25.396 A:middle
Therefore, the unique ID
for their image is going
00:05:25.396 --> 00:05:27.746 A:middle
to be Introduction-curiosity.
00:05:29.026 --> 00:05:34.196 A:middle
And here's an example how I
can reference it in Global.css.
00:05:34.526 --> 00:05:35.276 A:middle
Super simple.
00:05:35.816 --> 00:05:39.196 A:middle
So that was CSS customization.
00:05:40.506 --> 00:05:43.246 A:middle
We're going to shift focus
and talk about JavaScript.
00:05:46.176 --> 00:05:49.346 A:middle
So at this point, I have
a really beautiful page.
00:05:50.006 --> 00:05:52.056 A:middle
But at the same time,
it's not that interesting
00:05:52.056 --> 00:05:54.486 A:middle
because this is only
showing a static image.
00:05:55.086 --> 00:05:59.236 A:middle
I want it to be dynamic and
always look fresh to our user.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:06:00.546 --> 00:06:04.546 A:middle
To do that, I'm going to
write some JavaScript code
00:06:04.726 --> 00:06:08.846 A:middle
to point the latest satellite
image from NASA and display it
00:06:08.966 --> 00:06:10.246 A:middle
in a multi-cell object.
00:06:11.536 --> 00:06:14.526 A:middle
To start, I'm going to show
you how we can get that data
00:06:14.526 --> 00:06:17.816 A:middle
from NASA and-- on page load.
00:06:18.366 --> 00:06:24.846 A:middle
So in iAd Producer, we can
Object and Page by event
00:06:25.006 --> 00:06:27.416 A:middle
and we can add customization
00:06:27.476 --> 00:06:30.966 A:middle
by implementing JavaScript
callback for those events.
00:06:31.956 --> 00:06:36.226 A:middle
And we can see the event by
going to the Code menu item.
00:06:37.246 --> 00:06:39.826 A:middle
And for example, we're going
to look at the Page Event.
00:06:40.306 --> 00:06:44.166 A:middle
And there we can see a list
of event, the Page Flyer.
00:06:45.456 --> 00:06:47.386 A:middle
View Did Load is
particularly interesting
00:06:47.386 --> 00:06:49.126 A:middle
because it's the
event that got fired
00:06:49.126 --> 00:06:50.856 A:middle
when the page finished loading.
00:06:51.226 --> 00:06:53.636 A:middle
We going to choose that
and we'll see a list
00:06:53.636 --> 00:06:57.166 A:middle
of action base available for
the event, and we're going
00:06:57.166 --> 00:06:58.866 A:middle
to pick Execute JavaScript.
00:06:59.266 --> 00:07:03.286 A:middle
When we choose that option,
we will see the Code Editor.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:06:59.266 --> 00:07:03.286 A:middle
When we choose that option,
we will see the Code Editor.
00:07:03.646 --> 00:07:07.026 A:middle
And there we can add the code
to connect to the NASA server.
00:07:08.476 --> 00:07:10.636 A:middle
So how do we do the
server connection?
00:07:11.216 --> 00:07:13.866 A:middle
If you talk to a web developer,
00:07:14.186 --> 00:07:16.496 A:middle
he or she will probably
recommend something called
00:07:16.496 --> 00:07:19.736 A:middle
XMLHTTPRequest, it works.
00:07:19.736 --> 00:07:21.816 A:middle
But in iAd Producer,
we have something nicer
00:07:21.816 --> 00:07:22.716 A:middle
for you to work with.
00:07:24.056 --> 00:07:25.866 A:middle
It's called iAd.XHRLoader.
00:07:26.086 --> 00:07:28.026 A:middle
It's a really nice
and simple API,
00:07:28.026 --> 00:07:30.266 A:middle
and let me show you
how that works.
00:07:32.296 --> 00:07:33.786 A:middle
You can create an object
00:07:33.786 --> 00:07:36.856 A:middle
of iAd.XHRLoader by
passing in a URL.
00:07:37.696 --> 00:07:42.226 A:middle
Imagine the blue box you
see here is an object of it.
00:07:43.146 --> 00:07:47.116 A:middle
Every iAd.XHRLoader has
an interesting property
00:07:47.116 --> 00:07:47.916 A:middle
called delegate.
00:07:49.186 --> 00:07:53.196 A:middle
The delegate letter
iAd.XHRLoader know who notify
00:07:53.436 --> 00:07:55.016 A:middle
when the loading status change.
00:07:55.826 --> 00:07:57.906 A:middle
And it could be any
JavaScript object.
00:07:58.566 --> 00:08:00.146 A:middle
In this diagram, I'm
going to assign it
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:07:58.566 --> 00:08:00.146 A:middle
In this diagram, I'm
going to assign it
00:08:00.146 --> 00:08:03.226 A:middle
to an object represented
by the green box here.
00:08:05.376 --> 00:08:06.306 A:middle
And I did-- with
this [inaudible],
00:08:06.306 --> 00:08:10.256 A:middle
I can ask the iAd.XHRLoader
to start loading and one
00:08:10.256 --> 00:08:11.406 A:middle
or two thing would happen.
00:08:12.186 --> 00:08:17.626 A:middle
If the loading is successful,
the iAd.XHRLoader is going
00:08:17.626 --> 00:08:20.716 A:middle
to fire a loaderDidComplete
notification
00:08:21.246 --> 00:08:23.306 A:middle
and the green object
will receive it
00:08:23.306 --> 00:08:25.956 A:middle
and do some interesting
manipulation
00:08:25.956 --> 00:08:27.056 A:middle
with the return data.
00:08:27.636 --> 00:08:30.636 A:middle
However, if their loading
turned out to be unsuccessful,
00:08:30.636 --> 00:08:32.645 A:middle
it will get different
notification called
00:08:32.645 --> 00:08:35.556 A:middle
loaderDidFail and the
green object will get
00:08:35.556 --> 00:08:38.316 A:middle
that notification
and it could choose
00:08:38.316 --> 00:08:40.486 A:middle
to do some error
handling from there.
00:08:41.426 --> 00:08:44.616 A:middle
So this gives you-- this
diagram gives you our view how
00:08:44.616 --> 00:08:47.926 A:middle
iAd.XHRLoader works and
here's how it looks in code.
00:08:49.406 --> 00:08:50.436 A:middle
It's supper simple.
00:08:50.496 --> 00:08:52.626 A:middle
It doesn't take that
many lines of code.
00:08:53.406 --> 00:08:56.386 A:middle
We are going to look at this
in detail in a demo shortly.
00:08:56.906 --> 00:08:59.636 A:middle
Now, let's look at-- let's
move on to the next task.
00:08:59.946 --> 00:09:03.456 A:middle
I'm going to show you how we
can use the data from the server
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:08:59.946 --> 00:09:03.456 A:middle
I'm going to show you how we
can use the data from the server
00:09:03.456 --> 00:09:06.056 A:middle
and populate it in
a multi-cell object.
00:09:06.566 --> 00:09:09.936 A:middle
So back to iAd Producer.
00:09:10.686 --> 00:09:12.616 A:middle
I have replaced a single image
00:09:12.666 --> 00:09:15.076 A:middle
with a gallery, a
multi-cell object.
00:09:15.076 --> 00:09:17.346 A:middle
And this form, we
have a data from NASA.
00:09:17.346 --> 00:09:19.396 A:middle
I'm going to show
you how we can plot
00:09:19.446 --> 00:09:22.136 A:middle
that into this multi-cell
object we see on screen.
00:09:22.686 --> 00:09:29.126 A:middle
So imagine the gallery we
saw earlier represented
00:09:29.126 --> 00:09:33.226 A:middle
by this purple box
you see on screen.
00:09:33.226 --> 00:09:35.906 A:middle
Every multi-cell object
have an interesting property
00:09:35.906 --> 00:09:37.016 A:middle
called dataSource.
00:09:38.416 --> 00:09:40.936 A:middle
The concept of dataSource
is really similar
00:09:40.936 --> 00:09:43.186 A:middle
to delegate property
you saw earlier.
00:09:43.776 --> 00:09:49.716 A:middle
The dataSource property let
the multi-cell object know
00:09:50.006 --> 00:09:51.406 A:middle
where its data is coming from.
00:09:53.106 --> 00:09:56.076 A:middle
Imagine the dataSource
is represented
00:09:56.076 --> 00:09:57.766 A:middle
by the green box you see here.
00:09:58.476 --> 00:10:01.346 A:middle
In order for the green
object to supply data
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:09:58.476 --> 00:10:01.346 A:middle
In order for the green
object to supply data
00:10:01.346 --> 00:10:04.526 A:middle
to the multi-cell object, you
need to implement two methods.
00:10:04.716 --> 00:10:07.306 A:middle
The first method is
numberOfCellsInContainer.
00:10:08.266 --> 00:10:11.516 A:middle
It lets the multi-cell object
know how many cell there's going
00:10:11.516 --> 00:10:11.956 A:middle
to be.
00:10:12.616 --> 00:10:16.236 A:middle
The second method is called
cellAtIndexInContainer.
00:10:16.386 --> 00:10:19.116 A:middle
It just returns the cell
object at a different index.
00:10:19.456 --> 00:10:23.736 A:middle
So this gives you an overview
how to load a dynamic content
00:10:24.086 --> 00:10:25.396 A:middle
in a multi-cell object.
00:10:26.476 --> 00:10:27.876 A:middle
And here's how it looks in code.
00:10:28.486 --> 00:10:29.986 A:middle
It's also super simple.
00:10:29.986 --> 00:10:31.696 A:middle
It doesn't take that
many lines of code.
00:10:32.946 --> 00:10:35.316 A:middle
To give you a concrete
idea how these all work,
00:10:35.316 --> 00:10:37.436 A:middle
I'm going to ask Mark
to give you a demo.
00:10:38.176 --> 00:10:38.536 A:middle
>> Great.
00:10:39.386 --> 00:10:41.386 A:middle
[ Applause ]
00:10:41.756 --> 00:10:42.836 A:middle
Thank you very much Chi Wai.
00:10:43.216 --> 00:10:46.296 A:middle
Great. So I've got here on
my canvas, we're building--
00:10:46.296 --> 00:10:48.896 A:middle
this particular example is
an iBook widget and I've got
00:10:48.896 --> 00:10:51.936 A:middle
on the canvas one of
these multi-cell items.
00:10:52.306 --> 00:10:54.026 A:middle
And you can see, if
you double-click on it,
00:10:54.026 --> 00:10:56.186 A:middle
I can look at each one
of the cells in here.
00:10:56.186 --> 00:10:59.136 A:middle
And the sort of the standard
behavior for laying this out is
00:10:59.136 --> 00:11:02.086 A:middle
to jump in here and maybe I've
got three event associated
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:10:59.136 --> 00:11:02.086 A:middle
to jump in here and maybe I've
got three event associated
00:11:02.086 --> 00:11:05.086 A:middle
with Mars curiosity and I want
go and add a new one, well,
00:11:05.086 --> 00:11:06.656 A:middle
I can drop in a new cell here.
00:11:07.046 --> 00:11:08.686 A:middle
I can lay it out to
look like the other one
00:11:08.686 --> 00:11:10.726 A:middle
or maybe I can have a sort
of arbitrary content in there
00:11:10.726 --> 00:11:13.336 A:middle
and it's a really
nice easy way to go
00:11:13.336 --> 00:11:15.306 A:middle
and layout quite
a bit of content.
00:11:15.306 --> 00:11:17.066 A:middle
But if you go in
and you preview it,
00:11:17.066 --> 00:11:21.286 A:middle
you'll see that it will
preview it in a way that,
00:11:21.286 --> 00:11:23.096 A:middle
except for that cell,
actually looks really nice.
00:11:23.096 --> 00:11:25.606 A:middle
There's this nice fluid
motion back and forth
00:11:25.606 --> 00:11:29.516 A:middle
and it looks a lot like
a cover flow experience.
00:11:29.516 --> 00:11:31.736 A:middle
It's all tied up for
tap and ready for people
00:11:31.736 --> 00:11:33.746 A:middle
to attend, interact with it.
00:11:34.096 --> 00:11:36.986 A:middle
So if I close my preview
here and go back to my cells,
00:11:36.986 --> 00:11:38.416 A:middle
you'll see that I
can double-click in
00:11:38.416 --> 00:11:41.016 A:middle
and I can actually delete
cells as well, right?
00:11:41.016 --> 00:11:44.036 A:middle
So this is how you can go and
edit this if you want to go
00:11:44.036 --> 00:11:46.396 A:middle
and add more cells
when they're static.
00:11:46.896 --> 00:11:50.256 A:middle
Now, this is a gallery view
and if I select the Inspector,
00:11:50.256 --> 00:11:52.516 A:middle
you'll see that I got one
of the cells selected.
00:11:52.516 --> 00:11:55.476 A:middle
But if I just click out, you'll
see that it's a gallery view.
00:11:55.476 --> 00:11:56.736 A:middle
It's got a name here.
00:11:57.166 --> 00:12:00.236 A:middle
And it's a good example of
one of our multi-cell objects
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:11:57.166 --> 00:12:00.236 A:middle
And it's a good example of
one of our multi-cell objects
00:12:00.236 --> 00:12:02.026 A:middle
that has some great properties.
00:12:02.026 --> 00:12:05.796 A:middle
But we actually have quite a
few of those multi-cell objects.
00:12:05.796 --> 00:12:08.456 A:middle
We've got this wizzy
carousel that will spin
00:12:08.456 --> 00:12:11.546 A:middle
and it has multi-cells that
you can go and pop content in,
00:12:11.546 --> 00:12:13.306 A:middle
and a true cover flow view.
00:12:13.566 --> 00:12:16.156 A:middle
This is an example of a gallery
here that I've got on the canvas
00:12:16.156 --> 00:12:18.246 A:middle
and then a series of
other kinds of examples,
00:12:18.246 --> 00:12:21.526 A:middle
and they're all going to have a
different visual representation.
00:12:21.526 --> 00:12:24.706 A:middle
But from a sort of dynamic
and interactive capability,
00:12:24.706 --> 00:12:26.556 A:middle
they're going to have
a great experience
00:12:26.556 --> 00:12:27.956 A:middle
and that's what you're
going to want.
00:12:28.126 --> 00:12:30.766 A:middle
So, this is a rather
static implementation
00:12:30.766 --> 00:12:33.616 A:middle
and I think the whole point
to this particular example is
00:12:33.616 --> 00:12:36.376 A:middle
to take this cover flow or
this flow view that's up here
00:12:36.826 --> 00:12:39.176 A:middle
and convert it to something
that's much more dynamic.
00:12:39.176 --> 00:12:40.146 A:middle
We're going to call
to the server.
00:12:40.146 --> 00:12:42.976 A:middle
We're going to get these
milestones that you see in here,
00:12:43.216 --> 00:12:46.556 A:middle
bring them back, and
populate this thing based
00:12:46.556 --> 00:12:48.046 A:middle
on just calls to web server.
00:12:48.046 --> 00:12:51.236 A:middle
So the reality is I don't
need any of these cells.
00:12:51.486 --> 00:12:54.416 A:middle
And if there's any content in
here, I certainly don't need any
00:12:54.416 --> 00:12:57.606 A:middle
of the content associated
with it as well.
00:12:57.606 --> 00:13:00.316 A:middle
And it's going to bring it down
to basically a prototype cell,