!!! Listings aus dem Artikel "Werkzeug-Update" !!! von Markus Weyerhäuser !!! in iX 5/2013, S. 104 !!! Listing 1: Positionierung eines Button UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [myButton setTitle:@"Abbruch" forState:UIControlStateNormal]; [myButton setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.view addSubview:myButton]; NSLayoutConstraint *myConstraint = nil; myConstraint =[NSLayoutConstraint constraintWithItem:myButton attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:20]; [self.view addConstraint:myConstraint]; !!! Listing 2: (id) $1 = 0x07165120 * | * | | * - AMBIGUOUS LAYOUT | | | | | | | | | !!! Listing 3: Zusätzliche Positionierungsregel myConstraint =[NSLayoutConstraint constraintWithItem:myButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:myView attribute:NSLayoutAttributeTop multiplier:1.0 constant:20]; [self.view addConstraint:myConstraint]; !!! Listing 4: Deklarative Positionierung NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(myButton); NSArray *myConstraints = nil; myConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[myButton]" options:0 metrics:nil views:viewsDictionary]; [self.view addConstraints:myConstraints]; myConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[myButton]" options:0 metrics:nil views:viewsDictionary]; [self.view addConstraints:myConstraints]; !!! Listing 5: Zeichenkette mit Attributen UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 50.0f)]; NSShadow *shadow = [[NSShadow alloc] init]; shadow.shadowColor = [UIColor grayColor]; shadow.shadowOffset = CGSizeMake(0.0f, 1.0f); UIFont *font = [UIFont systemFontOfSize:16.0f]; NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"Neu in iOS 5 iOS 6: Strings mit Attributen!" attributes:@{NSFontAttributeName : font}]; [attrString addAttribute:NSStrikethroughStyleAttributeName value:@1 range:NSMakeRange(7, 5)]; [attrString addAttribute:NSStrokeWidthAttributeName value:@2.0f range:NSMakeRange(7, 5)]; [attrString addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(13, 5)]; [attrString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(13, 5)]; [attrString addAttribute:NSUnderlineStyleAttributeName value:@1 range:NSMakeRange(20, 23)]; [attrString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(20, 23)]; label.attributedText = attrString; [self.view addSubview:label]; !!! Listing 6: Variable Anbindung an soziale Netze NSString *textToShare = @"Das neue Social Framework kann auf Facebook posten!"; UIImage *imageToShare = [UIImage imageNamed:@"logo.png"]; NSArray *activityItems = @[textToShare, imageToShare]; UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; activityVC.excludedActivityTypes = @[UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypeAssignToContact]; [self presentViewController:activityVC animated:YES completion:nil]; !!! Listing 7: Per Share Sheet ins vorgesehene soziale Netz if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; [controller setInitialText:@"Das neue Social Framework kann auf Facebook posten!"]; [controller addURL:[NSURL URLWithString:@"http://www.heise.de/ix"]]; [controller addImage:[UIImage imageNamed:@"logo.png"]]; [self presentViewController:controller animated:YES completion:Nil]; } !!! Listing 8: Kapseln eines HTTP-Requests mit SLRequest !!! oben: SLRequest -- bitte kursiv + (SLRequest *)requestForServiceType:(NSString *)serviceType requestMethod:(SLRequestMethod)requestMethod URL:(NSURL *)url parameters:(NSDictionary *)parameters !!! Listing 9: Zugriff auf Array und Dictionary // Zugriff auf Array-Element früher: Dem Array-Objekt wird der Index nachgestellt NSArray *farbentopf = [NSArray arrayWithObjects:@"rot", @"gruen", @"blau", nil]; NSString *farbe = [farbentopf objectAtIndexedSubscript:2]; // Zugriff auf Array-Element heute NSArray *farbentopf = @[ @"rot", @"gruen", @"blau" ]; NSString *farbe = farbentopf[2]; // Zugriff auf ein Dictionary, ein Objekt kann als Index dienen. NSDictionary *woerterbuch = @{ @"Samstag" : @"s bota", @"Sonntag" : @"nedelya" }; NSString *tag = @"Sonntag"; NSLog(@"Wie heißt '%@' auf bulgarisch? %@", tag, woerterbuch[tag]);