void UpdateMapViews() { if (map == null) { return; } for (int row = 0; row < map.Height; row++) { for (int column = 0; column < map.Width; column++) { Map.Map.Position position = new Map.Map.Position { Row = row, Column = column }; CGPoint point = map.PositionToPoint (position); Tile t = map.TileAtPosition (position); var bbox = map.BoundingBoxForTileAtPosition (position); Console.WriteLine ("{0}", point); Console.WriteLine ("bbox: {0}", bbox); NSImageView tileView = new NSImageView (bbox) {Image = t.Image, TranslatesAutoresizingMaskIntoConstraints = false}; AddSubview (tileView, NSWindowOrderingMode.Below, overlay); var constraint = NSLayoutConstraint.Create (this, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, tileView, NSLayoutAttribute.CenterX, 1, -point.X); AddConstraint (constraint); constraint = NSLayoutConstraint.Create (this, NSLayoutAttribute.Top, NSLayoutRelation.Equal, tileView, NSLayoutAttribute.Bottom, 1, -65 + point.Y); AddConstraint (constraint); constraint = NSLayoutConstraint.Create (tileView, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, bbox.Width); tileView.AddConstraint (constraint); constraint = NSLayoutConstraint.Create (tileView, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, bbox.Height); tileView.AddConstraint (constraint); } } }