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

Reply via email to