Wednesday, August 31, 2011
Tuesday, August 16, 2011
UIButton(ok) elhelyezese UITableView aljan
Itt van 2 pelda. Az elsoben csak 1 UIButton-t teszek ki, a masodikban 3-at. Az elsoben csak a UITableView utolso sectionjenek footer-jebe teszem ki a gombokat. A masodikbol ezt kihagytam. Amikor csak 1 gomb van akkor eleg az AutoResizingMask-ot a Width-re allitani. 3 gomb eseten mar mindegyiket mashogy kell beallitani. Igy ha elforgatjuk a device-t (es persze a shouldAutorotateToInterfaceOrientation YES-t ad vissza), akkor megfeleloen lesznek atmeretezve a gombok.
1 gombosnal hibatlan, de 3 gombosnal az a kis hibaja van, hogy landscape mode-ban kicsit nagyobb lesz a tavolsag a gombok kozott mint portrait mode-ban.
Labels:
orientation,
UIButton,
UITableView
Tuesday, July 12, 2011
nev-ertek megjelenitese UITableViewCell-ben
Kellett egy olyan UITableViewCell amiben nev-ertek parokat mutatok. Valamiert custom UITableViewCell-t csinaltam erre amibe tettem 2 UILabel-t ahelyett, hogy siman UITableViewCellStyleValue2-vel hoztam volna letre a cellakat. Most kijavitottam, de van par dolog amire itt is oda kell figyelni:
Az egyik dolog, hogy mivel a detailTextLabel-be esetleg tobb sornyi szoveg is kerulhet amit nem akarok trunc-olni ezert a cella magassagat be kell allitani (nem allitja magatol a device) valahogy igy:
- (CGFloat)tableView:(UITableView *)tableView_ heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGFloat kMinCellHeight = 44.0;
NSString *text = ZXGetPropertyValueForRow([indexPath row]);
CGSize textSize = CGSizeMake(tableView_.frame.size.width - 120.0, FLT_MAX);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 25.0f;
return MAX(size.height, kMinCellHeight);
}
Az egyik dolog, hogy mivel a detailTextLabel-be esetleg tobb sornyi szoveg is kerulhet amit nem akarok trunc-olni ezert a cella magassagat be kell allitani (nem allitja magatol a device) valahogy igy:
- (CGFloat)tableView:(UITableView *)tableView_ heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGFloat kMinCellHeight = 44.0;
NSString *text = ZXGetPropertyValueForRow([indexPath row]);
CGSize textSize = CGSizeMake(tableView_.frame.size.width - 120.0, FLT_MAX);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 25.0f;
return MAX(size.height, kMinCellHeight);
}
Azert hasznalom tableView.frame.size.width-120.0-at es nem a tobb helyen ajanlott 200.0f koruli ertekek valamelyiket, mert ez landscape modban is jo lesz. Ha a cella accessoryType-ja nem UITableViewCellAccessoryTypeNone hanem UITableViewCellAccessoryTypeDisclosureIndicator akkor inkabb -140.0-et kell hasznalni, mert a disclosureIndicator (>) elvesz 20 pixelt a detailTextView-tol. Ezek a 120.0-140.0-es ertekek csak hozzavetoleg jok. Azt meg nem sikerult kideriteni, hogy peldaul a Contacts App-ban ha felveszek egy tobb soros notes-ot akkor hogyan csinalja meg pontosan a cella magassagat. (Pedig ez lenne a lenyeg.)
A 25.0f-es ertek pedig ugy jott ki, hogy megneztem milyen magas a cella, ha nem varialok semmit es sorok_szama*19.0+25.0 jott ki azaz az egy soros ertekeknel 44.0f. Kivetel ez alol a Group-ok elso es utolso sora, ahol 45.0f-es a default magassag. (Csak Grouped Style-os UITableView-nal neztem ezeket az ertekeket.) Az elso es utolso sorok magassagat meg hiaba is allitottam 44.0-re, az minimum 45.0 lett.
A 15.0f-es meretet pedig a systemFontOfSize-nal pedig tobb helyen olvastam es probalgatassal nekem is ez jott ki.
Ahhoz persze, hogy tobb soros legyen a detailTextLabel meg be kellett allitani a numberOfLines-t 0-ra.
Egy masik problema volt, hogy a textLabel-be pont nem fert bele amit bele akartam irni. Eloszor azzal probalkoztam, hogy textLabel-en beallitom a betumeretet a setFont-tal ([[cell textLabel] setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];), de nem akartam azokat megvaltoztatni amik a default font-tal is elfernenek.
Egy masik megoldas, hogy textLabel-re is beallitjuk a numberOfLines-t mondjuk 0-ra, de mivel a textLabel es a detailTextLabel betumerete nem ugyanakkora ezert ha mindketto 2 soros akkor a masodik soruk el van csuszva egymastol ami eleg benan nez ki.
Vegul azt valasztottam (ami nem tul hosszu szovegeknel mukodik), hogy a numberOfLines-t hagytam a default 1-en (ez fontos!) es beallitottam a minimumFontSize-ot (ami a textLabel-nel kb 12) 10-re. Igy ami elozoleg pont nem fert bele azt meg beleferthet es nem is lesz tul csunya. Ehhez be kell allitani az adjustFontSizeToFitWidth-et is true-ra.
[[cell textLabel] setAdjustsFontSizeToFitWidth:true];
[[cell textLabel] setMinimumFontSize:10.0];
Ahhoz persze, hogy tobb soros legyen a detailTextLabel meg be kellett allitani a numberOfLines-t 0-ra.
Egy masik problema volt, hogy a textLabel-be pont nem fert bele amit bele akartam irni. Eloszor azzal probalkoztam, hogy textLabel-en beallitom a betumeretet a setFont-tal ([[cell textLabel] setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];), de nem akartam azokat megvaltoztatni amik a default font-tal is elfernenek.
Egy masik megoldas, hogy textLabel-re is beallitjuk a numberOfLines-t mondjuk 0-ra, de mivel a textLabel es a detailTextLabel betumerete nem ugyanakkora ezert ha mindketto 2 soros akkor a masodik soruk el van csuszva egymastol ami eleg benan nez ki.
Vegul azt valasztottam (ami nem tul hosszu szovegeknel mukodik), hogy a numberOfLines-t hagytam a default 1-en (ez fontos!) es beallitottam a minimumFontSize-ot (ami a textLabel-nel kb 12) 10-re. Igy ami elozoleg pont nem fert bele azt meg beleferthet es nem is lesz tul csunya. Ehhez be kell allitani az adjustFontSizeToFitWidth-et is true-ra.
[[cell textLabel] setAdjustsFontSizeToFitWidth:true];
[[cell textLabel] setMinimumFontSize:10.0];
Monday, July 11, 2011
Wednesday, July 6, 2011
Codesign error lejart provisioning profile update-je utan
Lejart a provisioning profile amit renew-oltam, letoltottem, de futtatasnal codesign error jott.
- select don't code sign from Project > Build Settings > Code Signing
Itt talaltam ezt a megoldast, ami mukodott:
- select don't code sign from Project > Build Settings > Code Signing
- Clean the build
- Build it again
- should show an error like "this stuff needs signing"
- Choose the new profile from the Code Signing
- Rebuild
Labels:
codesign error,
provisioning profile
Monday, February 21, 2011
Eltuntek az Outlet-ek az Interface Builder-bol
Nem tudom mi tortent, de az egyik build-nel kaptam egy warning-ot, hogy hianyoznak az egyik xib Outletei. Az Interface Builder-ben megnyitva a nib-et lattam, hogy hibas helyre mutatnak a File's Owner Outlet-ek, de meg a View Outlet is. Mikor toroltem a kapcsolatot az Outlet-ek is eltuntek. Nem tudom mi okozta ezt, de csak ugy sikerult rendebhoznom, ha az IB-ben kivalasztottam egy masik class-t a File's Owner-nel aztan ujra kivalasztottam a sajatjat. Ekkor rendesen megjelentek az Outlet-ek es mar csak be kellett allitani, hogy melyik hova mutasson.
Labels:
Interface Builder,
Outlet
Monday, February 14, 2011
Tuesday, January 25, 2011
Csak az egyik cella ne legyen kijelolve touch-nal
Magan a UITableView-n bekapcsolhatjuk a "Show Selection On Touch"-ot az IB-ben, de ha az egyik cellanal megsem akarunk selection-t, akkor amikor azt letrehozzuk a tableView:cellForRowAtIndexPath:-ban akkor be kell allitani rajta a UITableViewCellSelectionStyleNone-t:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Labels:
selection,
UITableView,
UITableViewCell
Wednesday, January 19, 2011
presentModalViewController:animated: es dismissModalViewControllerAnimated:
Mindig a pushViewController:animated:-et es a popViewControllerAnimated:-et hasznaltam, pedig neha jol helyettuk a presentModalViewController:animated: es dismissModalViewControllerAnimated:
Peldaul amikor sajat AVPlayer vagy AVRecorder view-t akarok megmutatni. Igy legalabb nem kell rejtegetni kulon a navigationBar-t.
Tuesday, January 18, 2011
NSStringFromCGRect
Ha CGPoint-ot akarok logolni, akkor:
NSLog(@"%@", NSStringFromCGPoint(cgPoint));Ha meg CGRect-et akkor:
NSLog(@"%@", NSStringFromCGRect(cgRect));
Labels:
log,
NSLog,
NSStringFromCGPoint,
NSStringFromCGRect
Monday, January 17, 2011
1 touch vagy tobb
Mashogy kellett lekezelni a sima touch-ot a UIView-n es mashogy a dupla touch-ot. Itt a megoldas (innen):
switch (tapCount) {
case 1:
[self performSelector:@selector(singleTapMethod) withObject:nil afterDelay:.4];
break;
case 2:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTapMethod) object:nil];
[self performSelector:@selector(doubleTapMethod) withObject:nil afterDelay:.4];
break;
case 3:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doubleTapMethod) object:nil];
[self performSelector:@selector(tripleTapMethod) withObject:nil afterDelay:.4];
break;
case 4:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tripleTapMethod) object:nil];
[self quadrupleTap];
break;
default:
break;
}
Ami persze a touchesEnded:withEvent-be megy.
Subscribe to:
Posts (Atom)
