Dynamic Type in iOS 7: Not Quite as "Dynamic" as You Might Think

One of the nice features in iOS 7 for old fogeys such as myself is that the user can use the general Settings to increase and decrease the fonts used in apps. This is called "Dynamic Type." Judging by developer forums, I'm not the only one who thought that this …

more ...

Xamarin Code for iBeacons

Did I mention how easy it is to track an iBeacon using Xamarin?

[code lang="csharp"]
locationManager = new CLLocationManager();
var beaconId = new NSUuid("E437C1AF-36CE-4BBC-BBE2-6CE802977C46");
var beaconRegion = new CLBeaconRegion(beaconId, "My Beacon");
locationManager.RegionEntered += (s, e) => {
if(e.Region.Identifier == "My Beacon")
{
Console.WriteLine("Found My Beacon");
//Fire up ranging
locationManager …

more ...

My Favorite iOS 7 APIs Part 1: iBeacons and Multipeer Connectivity

Since Xamarin provides full native capabilities, developers don't need to wait for us to exploit iOS 7's awesome new APIs, such as:

  • iBeacon: This, to my mind, is the stealth API of the release. An iBeacon is a Bluetooth device (just iOS devices for now, but Apple says they'll release …

more ...

3D Maps in iOS 7 with Xamarin

It's trivially simple to show 3D maps in iOS 7:

[code lang="csharp"]
var target = new CLLocationCoordinate2D(37.7952, -122.4028);
var viewPoint = new CLLocationCoordinate2D(37.8009, -122.4100);
//Enable 3D buildings
mapView.ShowsBuildings = true;
mapView.PitchEnabled = true;

var camera = MKMapCamera.CameraLookingAtCenterCoordinate(target, viewPoint, 500);
mapView.Camera = camera;
[/code]

MKMapCamera

more ...

Full Screen Content and EdgesForExtendedLayout in iOS 7

One of the difference that jumps out dramatically to a programmer -- especially those of us who typically build our UIs in code rather than using a visual design surface -- is the new "full-screen content" concept.

This is particularly evident with UINavigationControllers. This picture shows the difference between the default …

more ...

Breaking Bad Ending Prediction

Going on record with my Breaking Bad prediction:

EAAAAEqhoq0ty5977EFCIguikrRVYzZsL4CiNXNK7VKcLs8Ik5lmrtsI3cJPo19bq2HBZavatk0EalFyeqQx6w2K6RxIuLoRbuddMJ4qSiZgQ8l3VjB1JGUw1ucskXUxL/ZL7HFRGY0424JY/MH4pirH4yCJ/ORGW7fSyiPQNtEDkh2s5Qs8QivN0ueJi1p/v2c4AV7vHYpSqfBf7e6AFQ1DPsMsHOJf05kIvh7BUp/LKssRFoL9jGQ2uqT1R7FnAv9icRbpUOVIDZ74N63JAhGOuye9uNv2dYAb53H53RxWN9b2Em1kXlnKoflf2rEqa6UCNvVvPy+kgMuKQuAEy+/ut70=

Decrypt with:

var key = new Rfc2898DeriveBytes("BreakingBadEndingPrediction", "o6806642kbM7c5");
var bytes = Convert.FromBase64String(cipherText);
using (var msDecrypt = new MemoryStream(bytes))
{
aesAlg = new RijndaelManaged();
aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
aesAlg.IV = ReadByteArray(msDecrypt);
var …
more ...

Kiteboarding: Four Days Since Our Last Tiger Shark Attack

I am holding a bar while floating in a murky bay, slowly drifting towards a shipping channel. If I pull on the bar, 6 things can happen, only 1 of which is good. Not to mention the tiger shark. The tiger shark doesn't care whether I pull the bar or …

more ...


# ChromeCast Home Media Server: Xamarin.iOS FTW!

As I blogged about last weekend, I got a ChromeCast and had a simple-enough time creating an iOS-binding library for Xamarin.iOS, allowing me to program the ChromeCast in C# (or F#, maybe next weekend…).

This weekend, I wrote a simple Home Media Server that allows me to stream… well …

more ...