Wpis z mikrobloga

#programowanie #iosdev

Jeden widok (UIView) ma przypisaną dokładnie jedną warstwę (CALayer), dopiero do tej jednej nadrzędnej warstwy można przypisywać następne. Tylko z tymi następnymi jest problem, należy je manualnie "wyrysować" (np przez nadpisanie layoutSublayers w naszym CALayer), bo tylko ta przypisana do widoku jest obsłużona z automatu. Potrzebne będzie to przy zmianach szerokości zawartości, transformacjach itd...

Tu pojawia się kolejny problem, widoki mają zmienną

tag
dzięki której można się do nich odwoływać -> viewWithTag:, a warstwy już tego nie mają, ba nie mają nic, po czym można by było je identyfikować.

Jest za to całkiem zmyślne obejście. Można wykorzystywać je jak NSDictionary o tak:

„Moreover, you can treat a CALayer as a kind of NSDictionary, and get and set the value for any key. This means you can attach arbitrary information to an individual layer instance and retrieve it later. For example, earlier I mentioned that to apply manual layout to a layer’s sublayers, you will need a way of identifying those sublayers. This feature could provide a way of doing that. For example:

[myLayer1 setValue:@"Manny" forKey:@"name"];

[myLayer2 setValue:@"Moe" forKey:@"name"];

A layer doesn’t have a name property; the @"name" key is something I’m attaching to these layers arbitrarily. Now I can identify these layers later by getting the value of their respective @"name" keys.”

Matt Neuburg. „Programming iOS 7”

Teraz podczas wykonywania layoutSublayersOfLayer: (nadrzędną warstwę mamy z widoku) jedziemy sobie w pętli po jej sub-warstwach i odpalamy metody dla nich odpowiednie.

for (CALayer *layer in [superLayer sublayers]) {

if ([[layer name] isEqualToString:kSmiesznaWarstwa]) {

//zrób coś ze mną

}

}

Widok jest tylko delegatem dla warstwy, wszystko co każemy wykonać widokowi jest przekazywane do CALayer, działa to też w drugą stronę, warstwy są także odpowiedzialne za cachowanie tego co mają narysować, jako bitmapa.
razvizion - #programowanie #iosdev



Jeden widok (UIView) ma przypisaną dokładnie je...

źródło: comment_MlUJ0Kr9u0R6KBQF3gxXytnqiin55Z04.jpg

Pobierz