Skip to content

Instantly share code, notes, and snippets.

@rdelrosario
Created November 30, 2017 22:47
Show Gist options
  • Save rdelrosario/6fc204caff25f623d3d0e109623beac2 to your computer and use it in GitHub Desktop.
Save rdelrosario/6fc204caff25f623d3d0e109623beac2 to your computer and use it in GitHub Desktop.
iOS - Title Position
void SetTitlePosition( CustomNavigationPage.TitleAlignment alignment,Thickness padding, Thickness margin, CGRect vFrame)
{
var marginX = margin.Top;
var marginY = margin.Left;
var marginWidth = margin.Left + margin.Right;
var marginHeight = margin.Top + margin.Bottom;
var paddingWidth = padding.Left + padding.Right;
var paddingHeight = padding.Top + padding.Bottom;
var paddingX = padding.Left;
var paddingY = padding.Top;
if(CustomNavigationPage.GetTitleBackground(Element) !=null && vFrame.Width == 0 && vFrame.Height == 0)
{
vFrame = titleView.Frame;
}
marginView.Frame = new CGRect(vFrame.X, vFrame.Y, vFrame.Width, vFrame.Height);
double offset = 0;
titleLabel.AutoresizingMask = UIViewAutoresizing.All;
switch (alignment)
{
case CustomNavigationPage.TitleAlignment.Start:
marginView.Frame = new CGRect( vFrame.X, marginView.Frame.Y, marginView.Bounds.Width + marginWidth + paddingWidth, marginView.Bounds.Height + marginHeight + paddingHeight);
var startCenter = marginView.Center;
startCenter.Y = marginView.Superview.Center.Y;
marginView.Center = startCenter;
titleLabel.TextAlignment = UITextAlignment.Left;
subtitleLabel.TextAlignment = UITextAlignment.Left;
offset = marginX;
break;
case CustomNavigationPage.TitleAlignment.Center:
offset = marginX;
marginView.Frame = new CGRect(marginView.Frame.X , marginView.Frame.Y , marginView.Bounds.Width + marginWidth + paddingWidth, marginView.Bounds.Height + marginHeight + paddingHeight);
marginView.Center = marginView.Superview.Center;
titleLabel.TextAlignment = UITextAlignment.Center;
subtitleLabel.TextAlignment = UITextAlignment.Center;
break;
case CustomNavigationPage.TitleAlignment.End:
var endCenter = marginView.Center;
endCenter.Y = marginView.Superview.Center.Y;
marginView.Center = endCenter;
titleLabel.TextAlignment = UITextAlignment.Right;
subtitleLabel.TextAlignment = UITextAlignment.Right;
marginView.Frame = new CGRect(marginView.Superview.Frame.Width - marginView.Frame.Width - offset -marginWidth-paddingWidth, marginView.Frame.Y , marginView.Bounds.Width + marginWidth + paddingWidth, marginView.Bounds.Height +marginHeight + paddingHeight);
offset = marginView.Frame.Width - vFrame.Width - paddingWidth - marginX;
break;
}
titleView.Frame = new CGRect(offset , vFrame.Y + marginY, vFrame.Width + paddingWidth, vFrame.Height + paddingHeight);
var cPage = Element as CustomPage;
if (cPage != null && (!string.IsNullOrEmpty(cPage.Subtitle) || (cPage.FormattedSubtitle != null && cPage.FormattedSubtitle.Spans.Count > 0)))
{
titleLabel.Frame = new CGRect(paddingX, paddingY, titleView.Frame.Width , titleLabel.IntrinsicContentSize.Height);
subtitleLabel.Frame = new CGRect(titleLabel.Frame.X, titleLabel.Frame.Y+titleLabel.Frame.Height + 3, titleView.Frame.Width, subtitleLabel.Frame.Height);
}
else
{
titleLabel.Frame = new CGRect(paddingX, paddingY, titleLabel.IntrinsicContentSize.Width, titleLabel.IntrinsicContentSize.Height );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment