Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

Padding in einem WebView unter IOS 11

Erstellt in Apple Swift, IPhone SDK am 19. Januar 2018 vom Daschmi

In iOS11 wurde ein Padding eingeführt, damit Inhalte unter der Statusbar fixiert werden. Damit das Webview (WKWebView oder UIWebView) wieder komplett unter der Statusbar liegt kann folgende ViewPort Konfiguration verwendet werden.

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no,viewport-fit=cover" />

Wichtig ist das

viewport-fit=cover

Hier: https://ayogo.com/blog/ios11-viewport/ wird das Ganze noch näher erklärt.

Zertifikat für den Apple Push Server erstellen

Erstellt in IPhone SDK am 10. November 2015 vom Daschmi

Damit man mit dem Apple Notification Server kommunizieren kann, muss man jedes Jahr ein Zertifikat erstellen. Dazu muss man den Privaten Schlüssel und das Zertifikat exportieren und wie folgt umwandeln.

Exportierte .p12 Dateien in .pem Dateien umwandeln:

openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12
openssl pkcs12 -nocerts -out key.pem -in key.p12

Passwort aus Key entfernen:

openssl rsa -in key.pem -out key-nopwd.pem

Dateien kombinieren:

cat cert.pem key-nopwd.pem > apn.pem

Kommunikation testen:

openssl s_client -connect gateway.push.apple.com:2195 -cert cert.pem -key key-nopwd.pem

HTTP in iOS 9.0 standardmäßig deaktiviert.

Erstellt in IPhone SDK am 21. Oktober 2015 vom Daschmi

Apple hat das unverschlüsselte HTTP Protokoll mit dem Update auf iOS 9.0 standardmäßig deaktiviert und es sind nur noch HTTPS Anfragen zulässig. Weiterhin werden nur noch bestimmte Verschlüsselungsalgorithmen von Apple als sicher eingestuft und erlaubt.

Apple erläutert diesen Schritt hier.

Mittels folgendem Eintrag in der plist Datei eines XCode Projektes sind aber weiterhin HTTP Anfragen möglich:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key><true/>
</dict>

MD5 Checksumme mit Apple Swift berechnen

Erstellt in Apple Swift am 24. November 2014 vom Daschmi

Leider fehlt der Programmiersprache Swift von Apple eine implementation des MD5 Hash Algorithmuses. Dieser kann aber leicht durch eine Erweiterung des String Datentypes nachgerüstet werden:

extension String  {
    var md5: String! {
        let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
        let strLen = CC_LONG(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)

        CC_MD5(str!, strLen, result)

        var hash = NSMutableString()
        for i in 0..<digestLen {
            hash.appendFormat("%02x", result[i])
        }

        result.destroy()

        return String(format: hash)
    }
}

Angewendet wird das ganze dann einfach wie folgt:

var strHASH : NSString = strToHash.md5

Bilder in iOS auf Breite skallieren unter Beachtung des Seitenverhältnisses

Erstellt in IPhone SDK am 30. September 2013 vom Daschmi

- (UIImage *)imageWithImage: (UIImage *)sourceImage {

i_width = 640; // Neue Breite für das Bild

float oldWidth = sourceImage.size.width;
float scaleFactor = i_width / oldWidth;

float newHeight = sourceImage.size.height * scaleFactor;
float newWidth = oldWidth * scaleFactor;

UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
[sourceImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return newImage;

}

Neue Version der iPhone Anwendung Airleben Luftdichtheitsklassenrechner veröffentlicht

Erstellt in IPhone SDK am 19. Januar 2013 vom Daschmi

Gestern wurde die neue Version des Airleben Luftdichtheitsklassenrechners veröffentlicht. Der Airleben Luftdichtheitsklassenrechner ist eine iPhone Anwendung der Firma LBG GmbH Gotha, programmiert von maennchen1.de.

Die neuen Funktionen im Überblick:

  • iPhone5 Kompatibilität erhöht
  • Neue Funktion „Einheitenrechner“
  • Umrechnung von Einheiten aus Druck, Fläche, Länge, Masse, Zeit, Volumen, Geschwindigkeit, Temperatur, Leistung, Energie

Die App kann hier kostenlos über den App. Store bezogen werden.

Problem mit Hintergrund eines UITableView nach Update auf iOS Version 6

Erstellt in IPhone SDK am 28. September 2012 vom Daschmi

Bisher konnte der Hintergrund eines UITableViews mittels setBackgroundColor direkt gesetzt werden. Ab iOS Version 6 muss das dahinterlegene View gesetzt order entfernt werden. Folgender Code setzt den Hintergrund einer UITableView ab Versio6:

[[self tvConnections] setBackgroundColor:[app cBackground]];
[[self tvConnections] setBackgroundView:nil];

Schriftgröße eines mehrzeiligen UILabel automatisch anpassen.

Erstellt in IPhone SDK am 30. Juni 2012 vom Daschmi

UILabel unterstützt die automatische Schriftgrößenanpassung von Haus aus. Allerdings nur bei einzeiligen Texten. Mit folgender Funktion wird die Schriftgröße an das übergebene Label angepasst:


- (void)sizeFontForLabel:(UILabel *)label {

 for(int i = 28; i > 10; i = i-2)
 {

 label.font = [UIFont fontWithName:label.font.fontName size:i];
 CGSize constraintSize = CGSizeMake(label.frame.size.width, MAXFLOAT);
 CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

 if(labelSize.height <= label.frame.size.height) break;

 }

}

Zugriff auf die Kamera und das Album aus einer IPhone Anwendung

Erstellt in IPhone SDK am 10. Juni 2012 vom Daschmi

Um Bilder zu seiner Anwendung hinzuzufügen macht kann man den Zugriff auf die eingebaute Kamera oder das Album nutzen. Für den Zugriff sollte man die internen Schnittstellen verwenden. Der Zugriff auf die iPhone Funktionen wird über die UIImagePicker Klasse realisiert.

Um den ImagePicker zu nutzen geht man wie folgt vor:

UIImagePickerController *picker1 = [[UIImagePickerController alloc]init];
 picker1.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
 picker1.sourceType = UIImagePickerControllerSourceTypeCamera;
 picker1.allowsEditing = YES;
 picker1.delegate = self;
 [self presentModalViewController:picker1 animated:YES];

Möchte man auf die Kamera statt auf das Album zugreifen ersetzt man den Sourcetyp mit:

picker1.sourceType = UIImagePickerControllerSourceTypeCamera;

Über die Delegate Klasse kann man das zurückgegebene Bild steuern.

Dazu muss man folgende Klasse überschreiben:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

Auf das bearbeitete Bild kann man dann wie folgt zugreifen:

UIImage *img = [info objectForKey:@"UIImagePickerControllerEditedImage"]];

Es macht Sinn das Ganze über ein UIActionSheet zu steuern, um die gewohnte iPhone Bedienung zu erhalten. Die Kamera Funktion lässt sich im übrigen nicht im Simulator testen.