Hi I tried running your code yesterday (this has been sitting in my "things to look into" since you posted it, I just had servers down in the day job, so I didn't have time to look into it)
Glad you got it working! Nic On 1 February 2013 20:09, Guido Van Hoecke <[email protected]> wrote: > Hi, > > I found a way to get around this problem and want to share it. > > In the ViewWillAppear I now create a dummy RootElement with an empty > section. That ensures that the Root.TableView as well as > Root.TableView.BackgroundView do exist. I then set the BackgroundView to > null, and set the desired BackgroundColor. > > And then I create the real RootElement, ahter the UITableView settings > heave been done. > > Far from elegant, but it works for Plain as well as Grouped > UITableViewStyles. > > > Guido. > > On 30 January 2013 23:24, Guido Van Hoecke <[email protected]> wrote: >> Hi, >> >> I want to use gradient backgrounds for my tableview cells >> (based upon MonoTouch.Dialog StyledStringElements), and I want to >> specify the BackgroundColor of the UITableViews. >> >> After quite some searching and reading I came up with an approach that >> builds on two distinct aspects: >> >> 1. Nullify the TableView.BackgroundView and set the >> TableView.BackgroundColor to the desired color. This is the color that >> shows in the border around Grouped tableview cells. >> >> 2. Set the BackgroundColor as UIColorFromPatternImage(patternImage) for >> all Elements in the UITableView. >> >> My apps allow color selection by the user, so the pattern image is to be >> created dynamically (i.e. for the initial default color and whenever the >> user chooses a different color). >> >> 3. So here's how I create the gradient image: >> >> 3.1. Create a CAGradientLayer using White and the user specified color >> >> 3.2. Create a tiny (44x44) view, set its BackgroundColor to Clear, and >> insert the above gradientLayer as layer 0 using InsertSublLayer. >> >> 3.3. I then render the view in the current context and retrieve it as a >> UIImage file to be used by step 2 above, i.e. as patternImage. >> >> I created a one source demo project demonstrating these techniques. Feel >> free to get it at https://gist.github.com/4677718. Create an empty >> project and replace Main.cs by the Main.cs file from the gist. >> It works as desired, and you can change it to use UITableViewStyle.Plain >> rather than Grouped. It just works. >> >> So here's my problem. I use these techniques in 4 projects for all >> DialogViewControllers and it works fine as long as they use >> UITableViewStyle.Grouped. >> >> But when using UITableviewstyle.Plain the cells that are visible when >> the tableview appears, do not have the GradientColor. It is as if the >> BackgroundColor is Clear: they are rendered with the >> TableView.BackgroundColor as BackgroundColor. >> >> Scrolling cells that are out of view into view shows them with the >> gradient background color. Scrolling 'bad' cells out of view and back >> into view shows them with gradient color. >> >> Clicking one of the buttons so that a next controller is shown, and >> navigating back from that controller again shows all visible cells >> with clear background. Scrolling cells that are out of view into view >> renders them with the gradient color. >> >> The RootElement is (re)created in the ViewWillAppear method, so that any >> changes selected at a more detailed level can be reflected in the >> RootElement. And when populating it in the constructor rather than the >> ViewWillAppear, the debugger shows that the Root.TableView does not >> exist yet, so its BackgroundView can not be nulled, which is essential >> to be able to set the UITableView.BackgroundColor. >> >> I created the little demo project to isolate and hopefully solve this >> problem, but in that project the techniques also work with >> UITableViewStyle.Plain. >> >> Apparently there's still an aspect that differentiates the demo project >> from my apps, but to be honest, I'm out of inspiration. >> >> I hope that some more knowledgeable hacker can suggest something I could >> try or investigate to get this solved. >> >> I am eager to provide any additional information that might be useful to >> track this problem. >> >> >> Guido >> >> -- >> People respond to people who respond. >> >> http://vanhoecke.org ... and go2 places! > _______________________________________________ > MonoTouch mailing list > [email protected] > http://lists.ximian.com/mailman/listinfo/monotouch -- Nic Wise t. +44 7788 592 806 | @fastchicken b. http://www.fastchicken.co.nz/ _______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
