void ReleaseDesignerOutlets() { if (AContentView != null) { AContentView.Dispose(); AContentView = null; } if (AreaLabel != null) { AreaLabel.Dispose(); AreaLabel = null; } if (AuthorLabel != null) { AuthorLabel.Dispose(); AuthorLabel = null; } if (BookSize != null) { BookSize.Dispose(); BookSize = null; } if (BookSizeLabel != null) { BookSizeLabel.Dispose(); BookSizeLabel = null; } if (BookTitleLabel != null) { BookTitleLabel.Dispose(); BookTitleLabel = null; } if (CaseLabel != null) { CaseLabel.Dispose(); CaseLabel = null; } if (CasesButton != null) { CasesButton.Dispose(); CasesButton = null; } if (CaseTextField != null) { CaseTextField.Dispose(); CaseTextField = null; } if (CaseView != null) { CaseView.Dispose(); CaseView = null; } if (ContactEmailLabel != null) { ContactEmailLabel.Dispose(); ContactEmailLabel = null; } if (ContactPhoneLabel != null) { ContactPhoneLabel.Dispose(); ContactPhoneLabel = null; } if (CoverImageView != null) { CoverImageView.Dispose(); CoverImageView = null; } if (CurrencyDate != null) { CurrencyDate.Dispose(); CurrencyDate = null; } if (CurrencyDateLabel != null) { CurrencyDateLabel.Dispose(); CurrencyDateLabel = null; } if (CurrentDayLabel != null) { CurrentDayLabel.Dispose(); CurrentDayLabel = null; } if (DescriptionLabel != null) { DescriptionLabel.Dispose(); DescriptionLabel = null; } if (DescriptionView != null) { DescriptionView.Dispose(); DescriptionView = null; } if (DespTextField != null) { DespTextField.Dispose(); DespTextField = null; } if (ExpiredInfoTF != null) { ExpiredInfoTF.Dispose(); ExpiredInfoTF = null; } if (ExpiredLabel != null) { ExpiredLabel.Dispose(); ExpiredLabel = null; } if (ExpiredView != null) { ExpiredView.Dispose(); ExpiredView = null; } if (InfoLabel != null) { InfoLabel.Dispose(); InfoLabel = null; } if (InformationView != null) { InformationView.Dispose(); InformationView = null; } if (InstalledDate != null) { InstalledDate.Dispose(); InstalledDate = null; } if (InstalledLabel != null) { InstalledLabel.Dispose(); InstalledLabel = null; } if (LoanButton != null) { LoanButton.Dispose(); LoanButton = null; } if (PracticeArea != null) { PracticeArea.Dispose(); PracticeArea = null; } if (ProgressBar != null) { ProgressBar.Dispose(); ProgressBar = null; } if (ProgressStatusLabel != null) { ProgressStatusLabel.Dispose(); ProgressStatusLabel = null; } if (ProgressView != null) { ProgressView.Dispose(); ProgressView = null; } if (ScrollView != null) { ScrollView.Dispose(); ScrollView = null; } if (Subcategory != null) { Subcategory.Dispose(); Subcategory = null; } if (SubcategoryLabel != null) { SubcategoryLabel.Dispose(); SubcategoryLabel = null; } if (TagsView != null) { TagsView.Dispose(); TagsView = null; } if (TitleView != null) { TitleView.Dispose(); TitleView = null; } if (UpdateButton != null) { UpdateButton.Dispose(); UpdateButton = null; } if (UpdateInfoLabel != null) { UpdateInfoLabel.Dispose(); UpdateInfoLabel = null; } if (Version != null) { Version.Dispose(); Version = null; } if (VersionLabel != null) { VersionLabel.Dispose(); VersionLabel = null; } if (WhatNewInfoLabel != null) { WhatNewInfoLabel.Dispose(); WhatNewInfoLabel = null; } if (WhatNewInfoView != null) { WhatNewInfoView.Dispose(); WhatNewInfoView = null; } if (WhatNewLabel != null) { WhatNewLabel.Dispose(); WhatNewLabel = null; } if (WhatNewView != null) { WhatNewView.Dispose(); WhatNewView = null; } if (DotButton != null) { DotButton.Dispose(); DotButton = null; } }
void LayoutSubViews() { if (BookInfo == null) { return; } //calculate the subview size CGSize infoViewSize = InformationView.Frame.Size; CGSize whatsNewViewSize = WhatNewView.Frame.Size; CGSize casesViewSize; if (CaseView.Hidden) { casesViewSize = new CGSize(0, 0); } else { casesViewSize = CaseView.Frame.Size; } CGSize despViewSize = DescriptionView.Frame.Size; CGSize expiredViewSize; if (BookInfo.DaysRemaining < 0) { expiredViewSize = ExpiredView.Frame.Size; } else { expiredViewSize = new CGSize(0, 0); } CGSize titleViewSize = TitleView.Frame.Size; //set scrollview contentview size nfloat caseSpace = casesViewSize.Height == 0 ? 0 : VERTICAL_SPACING; nfloat expirdSpace = expiredViewSize.Height == 0 ? 0 : VERTICAL_SPACING; nfloat height = VERTICAL_SPACING + infoViewSize.Height + VERTICAL_SPACING + whatsNewViewSize.Height + VERTICAL_SPACING + casesViewSize.Height + caseSpace + despViewSize.Height + VERTICAL_SPACING + expiredViewSize.Height + expirdSpace + titleViewSize.Height; CGRect scrollFrame = ScrollView.Frame; nfloat contentHeight = scrollFrame.Bottom > height ? scrollFrame.Bottom : height; var contentSize = new CGSize(AContentView.Frame.Size.Width, contentHeight); AContentView.SetFrameSize(contentSize); //add subview to document view var docView = (NSView)ScrollView.DocumentView; docView.SetFrameSize(contentSize); foreach (NSView view in docView.Subviews) { view.RemoveFromSuperview(); } docView.AddSubview(AContentView); AContentView.SetFrameOrigin(new CGPoint(0, 0)); //recalulate subviews origin point nfloat startOffset = scrollFrame.Bottom >= height ? (scrollFrame.Bottom - height + VERTICAL_SPACING) : VERTICAL_SPACING; nfloat yOffset; var InfoViewPoint = InformationView.Frame.Location; InfoViewPoint.Y = startOffset; InformationView.SetFrameOrigin(InfoViewPoint); var WhatsViewPoint = new CGPoint(InfoViewPoint.X, InfoViewPoint.Y + infoViewSize.Height + VERTICAL_SPACING); WhatNewView.SetFrameOrigin(WhatsViewPoint); var CaseViewPoint = new CGPoint(InfoViewPoint.X, WhatsViewPoint.Y + whatsNewViewSize.Height + VERTICAL_SPACING); CaseView.SetFrameOrigin(CaseViewPoint); if (casesViewSize.Height > 0) { yOffset = VERTICAL_SPACING; } else { yOffset = 0; } var DesViewPoint = new CGPoint(InfoViewPoint.X, CaseViewPoint.Y + casesViewSize.Height + yOffset); DescriptionView.SetFrameOrigin(DesViewPoint); var ExpireViewPoint = new CGPoint(InfoViewPoint.X, DesViewPoint.Y + despViewSize.Height + VERTICAL_SPACING); ExpiredView.SetFrameOrigin(ExpireViewPoint); if (expiredViewSize.Height > 0) { yOffset = VERTICAL_SPACING; } else { yOffset = 0; } var TitleViewPoint = new CGPoint(InfoViewPoint.X, ExpireViewPoint.Y + expiredViewSize.Height + yOffset); TitleView.SetFrameOrigin(TitleViewPoint); ScrollToTop(); }