public override void ViewDidLoad() { PullToRefresh = false; base.ViewDidLoad(); TableSource = new SharingTableViewSource(); ((SharingTableViewSource)TableSource).ShowsAccessory = Shared.SelectedCard.IsMine(); TableSource.ItemSelected += (arg1, arg2) => { if (Shared.SelectedCard.IsMine()) { var footer = ChildViewControllers.Where(c => c.GetType() == typeof(CardSharingStatusViewController)).FirstOrDefault() as CardSharingStatusViewController; if (footer == null) { return; } if (footer.Sharing) { return; } Shared.OutletSelected(arg2); TableView.ReloadRows(new NSIndexPath[] { arg1 }, UITableViewRowAnimation.Automatic); HeaderView.Update(false); footer.Update(); return; } ApplicationExtensions.OpenApplicationFromOutlet(arg2); }; TableView.Source = TableSource; HeaderView = new CardViewController(); HeaderView.SelectedCard = Shared.SelectedCard; HeaderView.View.Frame = new CGRect(0, 0, TableView.Frame.Width, CardViewController.GetCalculatedHeight()); TableView.TableHeaderView = HeaderView.View; AddChildViewController(HeaderView); HeaderView.DidMoveToParentViewController(this); if (Shared.SelectedCard.IsMine()) { CardSharingStatusViewController footerView = new CardSharingStatusViewController(); footerView.SelectedCard = Shared.SelectedCard; footerView.View.Frame = new CGRect(0, 0, TableView.Frame.Width, footerView.GetHeight()); TableView.TableFooterView = footerView.View; AddChildViewController(footerView); } }
void StartPartThree(Action completed) { if (Cancelled) { return; } var share_with_people_nearby = GetDefaultLabel(Strings.Onboarding.share_with_people_nearby); share_with_people_nearby.Frame = new CGRect(100, 50, 200, 75); share_with_people_nearby.Alpha = 1; View.AddSubview(share_with_people_nearby); var whitePhone = new UIImageView(UIImage.FromBundle("PhoneWhiteLarge")); whitePhone.ContentMode = UIViewContentMode.ScaleToFill; whitePhone.Frame = new CGRect(View.Frame.GetMaxX() - 120, View.Frame.GetMidY() - 100, 100, 210); whitePhone.Alpha = 0; View.AddSubview(whitePhone); var fakeCardView = CardImageView; fakeCardView.Alpha = 1; View.AddSubview(fakeCardView); var arrowImageView = new UIImageView(UIImage.FromBundle("ArrowWhite")); arrowImageView.Alpha = 1; View.AddSubview(arrowImageView); var pressAndHold = GetDefaultLabel(Strings.Onboarding.tap_to_share); pressAndHold.Alpha = 1; View.AddSubview(pressAndHold); CardSharingStatusViewController vc = new CardSharingStatusViewController(); vc.DisplayPurposeOnly = true; vc.View.Frame = new CGRect(50, View.Frame.GetMaxY() - 180, 100, 150); vc.View.Alpha = 1; AddChildViewController(vc); View.AddSubview(vc.View); vc.FirstTapInitiatedAction += () => { if (Cancelled) { return; } UIView.Animate(animationDuration / 2, () => { whitePhone.Alpha = 1; arrowImageView.Alpha = 0; pressAndHold.Alpha = 0; }, async() => { if (Cancelled) { return; } MoveCardBetweenPhones(fakeCardView, animationDuration, new CGPoint(whitePhone.Frame.GetMidX(), whitePhone.Frame.GetMidY())); await Task.Delay(TimeSpan.FromSeconds(animationDuration)); if (IsSufficentPermissionGranted()) { StartPartFourHelper(); } else if (ArePermissionUnknown()) //show permission alert, first time visitor { LocationPermissionAlertShown = true; vc.StartLocationManager(); //see DidBecomeActive for callback } else //returning user, alert already shown some time ago { StartPartFourHelper(); } }); }; arrowImageView.Frame = new CGRect(vc.View.Frame.GetMaxX() - 20, vc.View.Frame.GetMidY() + 20, 100, 28); pressAndHold.Frame = new CGRect(arrowImageView.Frame.GetMidX() - 50, arrowImageView.Frame.GetMaxY(), 100, 25); fakeCardView.Frame = new CGRect(vc.View.Center.X - 7, vc.View.Center.Y + 40, 14, 8); ShakeViewLeftAndRight(arrowImageView); }