I use this for a color + 2 labels header, and for image + label version: https://gist.github.com/2959075
The background image I use for the second one is just a thin sliver (10px wide?) of gradient. You can see the results of both here: http://www.fastchicken.co.nz/tripwallet/ (second shot down) and here: http://www.earnestapp.com/ (second screenshot in the cycle, the list of items) On Tue, Jun 19, 2012 at 6:55 PM, Guido Van Hoecke <[email protected]> wrote: > Hi, > > I have this Monotouch.Dialog app with UITableViewStyle.Plain that uses a > custom header: > > root.Add( > new Section{ > HeaderView = new CustomHeader > }); > > I need the custom header while I need to position the text at computed > coordinates: > > namespace MySpace > { > private const float _height = 23f; > public class CustomHeader : UIView > { > private string _title; > public CustomHeader(string title) : base(new RectangleF(0f, 0f, > UIScreen.MainScreen.ApplicationFrame.Width, _height)) > { > _title = title; > } > > public override void Draw(RectangleF rectangle) > { > UIColor.LightGray.SetFill(); > var context = UIGraphics.GetCurrentContext(); > context.FillRect(rectangle); > UIColor.Black.SetColor(); > // define variables x, y, width, height, > // and then draw the text > DrawString(_title, new RectangleF(x, y, width, height), > MyConfig.BoldFont, > UILineBreakMode.TailTruncation); > } > } > } > > But I want to use a background image. > > First idea was to base my CustomHeader on UIImageView rather than > UIView: > > namespace MySpace > { > private const float _height = 23f; > public class CustomHeader : UIImageView > { > private string _title; > public CustomHeader(string title) : base(new RectangleF(0f, 0f, > UIScreen.MainScreen.ApplicationFrame.Width, _height)) > { > _title = title; > BackGroundColor = UIColor.Clear; > Image = UIImage.FromFile("Image.png"); > } > > public override void Draw(RectangleF rectangle) > { > ... > } > } > } > > This shows the background, but without text as the Draw method is no > longer called. > > Then I tried to stick with the UIView, and add an UIImageView: > > namespace MySpace > { > private const float _height = 23f; > public class CustomHeader : UIView > { > private string _title; > public CustomHeader(string title) : base(new RectangleF(0f, 0f, > UIScreen.MainScreen.ApplicationFrame.Width, _height)) > { > _title = title; > BackGroundColor = UIColor.Clear; > var bg = new UIImageView { > Frame = new RectangleF(0f, 0f, > > UIScreen.MainScreen.ApplicationFrame.Width, Height), > BackgroundColor = UIColor.Clear, > Image = > UIImage.FromFile("Images/TableViewPlainHeaderBackground.png") > }; > AddSubView(bg); > SendSubviewToBack(bg); > } > > public override void Draw(RectangleF rectangle) > { > ... > } > } > } > > This approach also shows the image, but no text. > > I have the distinct feeling that this should be fairly simple, but > apparently I need some help here. > > Thanks in advance, > > > Guido > > -- > You need only reflect that one of the best ways to get yourself a > reputation as a dangerous citizen these days is to go about repeating > the very phrases which our founding fathers used in the struggle for > independence. > -- Charles A. Beard > _______________________________________________ > MonoTouch mailing list > [email protected] > http://lists.ximian.com/mailman/listinfo/monotouch -- Nic Wise t. +44 7788 592 806 | @fastchicken | http://www.linkedin.com/in/nicwise b. http://www.fastchicken.co.nz/ Earnest: Self-employed? Track your business expenses and income. http://earnestapp.com Nearest Bus: find when the next bus is coming to your stop. http://goo.gl/Vcz1p mobileAgent (for FreeAgent): get your accounts in your pocket. http://goo.gl/IuBU Trip Wallet: Keep track of your budget on the go: http://goo.gl/ePhKa London Bike App: Find the nearest Boris Bike, and get riding! http://goo.gl/Icp2 _______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
