Marcare URLs, hashtag și mention în IOS

Am de identificat într-un tweet URLs, hashtag-uri și mention tag-uri. Dacă # și @ le identific prin regular expression, pentru URLs folosesc o clasă foarte tare din IOS numită NSDataDetector, instanța uitându-se doar după ce-i specific eu: URLs.


NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:stringWithTags];
//identifica URLs in tweet.
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
NSArray *matchesOfURLS = [detector matchesInString:stringWithTags
options:0
range:NSMakeRange(0, [stringWithTags length])];
for (NSTextCheckingResult *match in matchesOfURLS) {
NSRange wordRange = [match range];
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:wordRange];
}

//identifica # si @ in tweet.
NSArray *matches = [self.regex matchesInString:stringWithTags options:0 range:NSMakeRange(0, stringWithTags.length)];
for (NSTextCheckingResult *match in matches) {
// wordRange -> length= lungime cuvant si location=poz in string
NSRange wordRange = [match rangeAtIndex:1];
NSString* word = [stringWithTags substringWithRange:wordRange];

if ([self sirul:word contineCaracter:’@’]){
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:wordRange];
}
else
{
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:wordRange];

}

}

Share Button

IOS – colturi rotunjite si borduri la poza de profil

Fie un UIImageView care va “încarca” o imagine. În cazul meu, am folosit imageTAView pentru a încarca poză de profil pentru aplicația mea de Twitter.
@property (nonatomic,strong) UIImageView *imageTAView;

In .m definim următoarele:
self.imageTAView.layer.cornerRadius = self.imageTAView.frame.size.width / 2;
self.imageTAView.clipsToBounds = YES;

Pentru a transforma imaginea pătrată în formă circulară definim raza circulara a layer-ului ca fiind jumătate din lățimea layerului pătrat. clipsToBounds “pune” masca nou-creată peste layerul inițiat pătrat.

Aplicarea bordurii se realizează cu borderWidth, proprietate din clasa CALayer, după cum urmează:

self.imageTAView.layer.borderWidth = 3.0f;
self.imageTAView.layer.borderColor = [UIColor lightGrayColor].CGColor;

Share Button

Cum setăm AppIcon pentru o aplicație IOS?

1. realizăm/căutăm o imagine – foarte bună ar fi una 1024x1024px.
2. încărcăm imaginea pe https://makeappicon.com
3. folosim o adresă de email pentru a primi arhiva cu icon-urile realizate. Nu trebuie să ne batem capul cu imagini 2x sau 3x. Știe Ben Cheng ce are de făcut cu poza.
4. în arhivă sunt două foldere IOS și Android. Din IOS luăm fodlerul AppIcon.appiconset și-l copiem în proiectul nostru.

Obs. Pentru informații despre dimensiunile icon-urilor avem acest tabel.

Share Button

WP Slimstat e foarte bun!

Atât de bun încât mi-a pus site-ul jos. Bine, n-ar fi o mare pierdere însă un plugin WP care nu este încă 100% compatibil cu WordPress 4.4 poate sa pună jos un site. Și nu aveam nici o intrare în error-log.

Share Button

De ce este necesară delegarea unui UIScrollView?

UIScrollView este un view în care vom putea efectua operații de zooming. Pentru a realiza acest lucru avem câțiva pași de urmat pentru a “pregăti” scrollview-ul.
1. Adăugăm în Storyboard un controller ScrollView și-l legăm de un outlet, să zicem scrollView in .h aferent
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
2. Definim un ImageView in .h care va încărca imaginea în care vom face zoom sau pinch.
@property (strong, nonatomic) UIImageView *imageView;
3. Ambele proprietăți vor fi sintetizate pentru a putea fi utilizate în .m
@synthesize imageView=_imageView;
@synthesize scrollView=_scrollView;
4. În viewDidLoad: încărcăm poza pe care ne vom “juca”
self.imageView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@”photo5.png”]];
5. Dimensionăm scrollView-ul cu dimensiunea imaginii încărcate
self.scrollView.contentSize=self.imageView.frame.size;
6. Legăm imageView-ul de scrollView ca un subview în stivă.
[self.scrollView addSubview:self.imageView];

În acest moment avem un scrollView în care am încărcat un imageView funcțional.

UIScrollView, fiind un view, nu știe să lucreze cu evenimentele apărute asupra sa. Prin urmare trebuie să delege pe cineva care să interpreteze acțiunile. Acest cineva este protocolul UIScrollViewDelegate. Pentru a-l pune la treabă, mai întâi îl adaugăm în .h
@interface ViewController : UIViewController
și urmărim care sunt metodele lui UIScrollViewDelegate ce trebuie musai implementate.
1. Cine anume se va scala atunci când se va face zooming? O întrebare legitimă. imageView-ul va suferi zooming-ul atunci cand el va aparea in scroolView.
– (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}

2. Delegăm pe self, adică ViewController-ul principal ca fiind delegat pentru scrollView. Acest ViewController implementează protocolul UIScrollViewDelegate, astfel încât scrollView-ul să “beneficieze” de metodele protocolului
self.scrollView.delegate=self;
3. Specificăm valorile maximale/minimale pentru zooming
self.scrollView.maximumZoomScale=5.0;
self.scrollView.minimumZoomScale=0.5;

Având toate acestea implementate, scrollView-ul va funcționa.

Share Button