public void TestTranslate() { var offset = new CGPoint(5.6, 7.8); var result = _rect.Translate(offset); AssertUtilsIOS.AreEqualCGRect(new CGRect(_rect.X + offset.X, _rect.Y + offset.Y, _rect.Width, _rect.Height), result); }
public override void Layout() { base.Layout(); if (Frame.IsEmpty || Frame.IsInfinite() || double.IsNaN(Frame.X) || double.IsInfinity(Frame.X)) { return; } nfloat maxLabelWidth = this.hexLabel.Cell.CellSizeForBounds(Frame).Width; for (int i = 0; i < Editors.Length; i++) { CGSize size = Editors[i].Label.Cell.CellSizeForBounds(Frame); if (size.Width > maxLabelWidth) { maxLabelWidth = size.Width; } } maxLabelWidth = (nfloat)Math.Ceiling(maxLabelWidth); var frame = Bounds; var labelFrame = new CGRect(frame.X, frame.Height - DefaultControlHeight, maxLabelWidth, DefaultControlHeight); var editorFrame = new CGRect(labelFrame.Right, labelFrame.Y, frame.Width - labelFrame.Right, DefaultControlHeight); var yOffset = DefaultControlHeight + DefaultGradientHeight + 3; for (int i = 0; i < Editors.Length; i++) { var channelGroup = Editors[i]; channelGroup.Label.Frame = labelFrame; channelGroup.Editor.Frame = editorFrame; channelGroup.Editor.Layout(); channelGroup.Gradient.Frame = new CGRect( editorFrame.X + .5f, editorFrame.Y - DefaultGradientHeight + 1, channelGroup.Editor.Subviews[0].Frame.Width - 1f, DefaultGradientHeight); channelGroup.Gradient.BorderColor = NSColor.DisabledControlText.CGColor; channelGroup.Gradient.ContentsScale = Window?.Screen?.BackingScaleFactor ?? NSScreen.MainScreen.BackingScaleFactor; labelFrame = labelFrame.Translate(0, -yOffset); editorFrame = editorFrame.Translate(0, -yOffset); } this.hexLabel.Frame = new CGRect(frame.X, 0, maxLabelWidth, DefaultControlHeight); this.hexEditor.Frame = new CGRect( labelFrame.Right, 0, frame.Width - labelFrame.Right - 16, DefaultControlHeight); }