8 din 13
8
intrebari programare iPhone
  [ Ignoră ]   [ # 106 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Quick trick
Poate se mai loveste cineva de problema: ca sa incarci o imagine din bundle intr-un UIWebView nu merge cale relativa (cred ca mergea in versiuni mai vechi, pe net unii foloseau asa), nu merge nici cu fullpath returnat de NSBundle.

NSString *imgDir [NSString stringWithFormat:@"xxx/%@"[e.name copy]];
NSString *imagePath [[NSBundle mainBundle] pathForResource:[e.index copy] ofType:@"png" inDirectory:imgDir]

La imagePath mai trebuie adaugat in fata “file://

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 107 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Continuare: Pentru a afisa o imagine pentru retina display trebuie creat un style, altfel imaginea este de 2 ori mai mare:

<style> img { width:320px; } </style>

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 108 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06
.ral:cr - 29 Noiembrie 2010 08:39 AM

Folosesc pentru animatii cea mai simpla utilizare a CoreAnimation. Pot afla cine a inceput animatia cand se apeleaza animationDidStop? Pot avea mai multe animatii in controller si la unele nu vreau sa fac nimic cand se termina.


[UIView beginAnimations:@“some_id” context:NULL];
[UIView setAnimationDuration:0.3];
currentButtonSelection.center = CGPointMake (x, 20);
[UIView commitAnimations];


-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
  NSLog(@“animationDidStop”);
}

Trebuie definit un selector, ajunge si id-ul animatiei in felul asta sau se pot defini metode diferite, dar trebuie sa fie sub forma asta.

[UIView setAnimationDidStopSelector:@selector(animationStop:finished:context:)];

- (
void)animationStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    NSLog
(@"animationStop %@"animationID);
 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 109 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Salut.
Am inceput de putin timp sa creez o aplicatie pentru iPhone. Am porniti de la un rss reader gasit pe net, pe care vreau sa-l modific comform unor cerinte impuse.
Problema care e: aplicatia citeste direct tag`urile dintr`un rss si, in functie de acestea, afiseaza sau nu informatiile.
Insa, problema apare cand incerc sa deschid un tag urmat de sintaxa ![CDATA[ (ex: <description><![CDATA[...).
Am vazut ca, pentru tag`urile obisnuite, foloseste sintaxa urmatoare de parsare:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
if(nil !=qualifiedName){
        elementName 
qualifiedName;
}
if([elementName isEqualToString:@"item"]){
        self
.currentItem [[[BlogRSS alloc]init]autorelease];
}else if ([elementName isEqualToString:@"media:thumbnail"]){
        self
.currentItem.mediaUrl [attributeDirect valueForKey:@"url"];
}else if ([elementName isEqualToString:@"title"||
           (
[elementName isEqualToString:@"link"){
       self
.currentItemValue [NSMutableString string];
}else{
self
.currentItemValue nil;
}

Am gasit pe pe alte forum`uri ca, pentru tag`urile urmate de CDATA se foloseste urmatoarea functie”

-(voidparser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{

Dar, mai departe, m-am blocat. Are cineva vreo idee cum a-si putea sa scot informatiile din tag`ul <description> , sau, macar sa-mi dea cateva idei.

P.S. Sper sa fi postat unde trebuie(sunt nou pe forum`ul acesta).
Va Multumesc!

Profil
 
  [ Ignoră ]   [ # 110 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Poti sa faci un NSString din NSData cu metoda asta a NSStringului:

- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding 
 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 111 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Multumesc de raspuns.
Sper sa`mi fie de ajutor.

Profil
 
  [ Ignoră ]   [ # 112 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Hmm..tot nu`mi arata descrierile.
Intrebare: cum se foloseste mai exact functia postata de tine?(incepator in ale object c`ului si chiar nu inteleg mai deloc functiile astea).
Am mai gasit in schimb si alta forma:

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{

//la care am adaugat:

NSString *cdataString [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];

/*apoi am incercat sa pun in campul description ceea ce`mi rezulta din cdataString in mai multe moduri, dar tot primeam erori, ori nu schimba cu nimic, adica descrierile, tot nu mi le afisa*/

Intrebare…e bine asa? Si daca da…cum initializez campul description cu ceea ce`mi returneaza functia mai sus pusa(asta daca-mi returneaza vreo valoare).

Daca totusi, ai idee cum se face cu functia pe care tu mi`ai aratat`o, te rog sa postezi si cum se initializeaza campul description cu ea.
Am atasat totusi si fisierul de la care am pornit parsarea rss`ului(in cazul de fata..este rss`ul site`ului bbc sport insa acolo nici un camp nu are codarea de tip CDATA).
Multumesc, din nou!

Fișiere atașate
BlogRssParser.txt  (Dimensiune Fişier 5 - Downloads: 103)
Profil
 
  [ Ignoră ]   [ # 113 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Nu vad unde este description, dar ce ai scris mai sus e bine. Poti sa vezi ce ti-a returnat cu NSLog(@”%@”, cdataString);
Ideea este ca ai obtinut stringul si nu ai facut nimic cu el.

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 114 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Multzam, din nou de raspuns.
Dap, am observat si eu dupa aia, numai ca..atunci cand initializam

self.currentItem.description=cdataString

nu-mi afisa nimic.
Am stat, dat cu capul de birou, ca sa-mi dau seama ca de fapt, cdataString era variabila locala.
Am initializat`o ca variabila globala, si..ce sa vezi, afiseaza.
Astfel, functia devine (nu stiu daca e tocmai corect din puctul de vedere al alocarii de memorie, dar..macar merge):

NSString *cdataString;
- (
void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{
cdataString 
[[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];

Next step..sa salvez feed`urile ca sa le pot citi, si in modul offline.
Din nou, apelez la tine, daca ai vreo idee..intelegi tu..:D

Profil
 
  [ Ignoră ]   [ # 115 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Pt a-l avea local poti salva reprezentarea string a xml-ul direct, are nsstringul metoda pt asta.


Nu mai stiu daca s-a dat raspunsul, dar ma interesa pe mine odata cum se poate desena content care sa aibe o masca rotunjita la colturi. Eh, am avut nevoie iarasi azi si am rezolvat:

#import <QuartzCore/QuartzCore.h>

self.layer.cornerRadius 14;
self.clipsToBounds YES

self fiind un view in care se baga contentul

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 116 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Am rezolvat treaba de atunci si multumesc din nou pentru raspuns.
Acum, alta problema. Am nevoie sa iau link`ul la poza de pe articol, si sa o afisez. Partea frumoasa acuma incepe. Pe xml`ul rss`ului nu am nici un tag de <img> cum ar fi normal si nici vreun url care sa ma duca la vreo imagine.
In schimb am tag`ul <content:encoded> in care este descris articolul propriu zi cu elementele de html aferente. Si, surprize, acolo am si tag`ul de <img>.
Deci, intrebare…se poate lucra continutul tag`ului <content:encoded> in vreun fel, sa pot scoate link`ul de la imagine?
M-am chinuit toata ziua sa fac un fel de explode pe string insa am reusit doar sa pun intr`un array stringul extras cu ajutorul unui predicat si anume:

NSArray *array=[NSMutableSet setWithArray:string];
[array filterUsingPredicate:[NSPredicate predicateWithFormat:@"SELF MATCHES '.*(src=).*'"]]


Dar aici am ramas in impas.

Ce primesc pe xml arata cam asa:

<content:encoded> <![CDATA[<p>....Text..<p><img src="http://www.../../../nume_poza.jpg"><p>...Iar text</p></content:encoded

Am testat si codul urmator insa fara vreun rezultat bun.

[[[string lastPathComponent] componentsSeparatedByString: @".jpg"] objectAtIndex0]
Profil
 
  [ Ignoră ]   [ # 117 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Vrei sa extragi poza si apoi sa ai si textul fara poza separat?
Eu folosesc pt ceva asemanator componentsSeparatedByString si extrag chiar 2 stringuri.
Faci un array cu separatorul [img]
Pt elementul nr 1 faci alt array dupa separatorul [/img]
Si elementul nr 0 va fi imaginea. Ce iti returneaza mai exact tie, asa pare ca ai facut?

Alta solutie ar fi expresii regulate, dar poate iti raspunde cineva care le stapaneste bine.

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 118 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Cand am folosit componentsSeparatedByString, ori faceam eu gresit cautarea..ori ceva nu era bine pus, ca`mi arata tot textul, plus ca componentele cu .jpg la sfarsit nu mi le evidentia, de aia am zis ca sigur am facut eu ceva rau.
Daca poti sa scrii tu si array`ul, exact cum crezi tu ca s`ar folosi, nu de alta dar…am mai incercat cu array, si serios daca am aflat cum acces la vreun element.
Greu mai e si object c`ul asta, cel putin la inceput.
Multumesc!

Profil
 
  [ Ignoră ]   [ # 119 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06
NSString *str  = @"<p>....Text..<p><img ><p>...Iar text</p>";
    
NSLog(@"%@" ,str);
    
NSArray *arr1 [str componentsSeparatedByString:@"<img >"];
    
NSLog(@"arr1 %@"arr2);
    
NSLog(@"EXTRACTED URL: %@"[arr2 objectAtIndex:0]); 

Nu stiu ce se intampla pt stringul tau, daca tine cont la separator si de \, de-asta e bien sa folosesti nslog si sa vezi pas cu pas ce se intampla.

Mda, vezi aici codul sursa, n-a ajuns intreg pe macuser http://utilitybase.com/paste/wCC

[ Modificat: 15 Decembrie 2010 12:02 PM de .ral:cr ]
 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 120 ]
Rank
Newbie
Din: 
Macuser din: 08.12.10

Merci mult!
Am sa incerc…si revin cu feedback.

Profil
 
   
8 din 13
8
 
‹‹ Grand Central e acum Open Source      Fink ››