[ios] Fixed PP layout.

This commit is contained in:
Ilya Grechuhin 2015-06-22 19:12:00 +03:00 committed by Alex Zolotarev
parent 997be7b6e8
commit fad1f704cb
6 changed files with 46 additions and 39 deletions

View file

@ -77,7 +77,7 @@ static inline CGPoint const dismissCenter(CGFloat xPosition)
- (void)dismiss
{
[UIView animateWithDuration:.3f animations:^
[UIView animateWithDuration:.1 animations:^
{
self.center = dismissCenter(self.center.x);
}];
@ -85,7 +85,7 @@ static inline CGPoint const dismissCenter(CGFloat xPosition)
- (void)show
{
[UIView animateWithDuration:.3f animations:^
[UIView animateWithDuration:.1 animations:^
{
self.center = openCenter(self.center.x);
}];
@ -108,7 +108,7 @@ static inline CGPoint const dismissCenter(CGFloat xPosition)
- (IBAction)backTap:(id)sender
{
[self dismiss];
[self.placePage.manager dismissPlacePage];
[self.placePage.manager refreshPlacePage];
}
- (void)layoutSubviews

View file

@ -21,6 +21,7 @@
- (instancetype)initWithViewController:(UIViewController<MWMPlacePageViewDragDelegate> *)viewController;
- (void)showPlacePageWithUserMark:(unique_ptr<UserMarkCopy>)userMark;
- (void)refreshPlacePage;
- (void)dismissPlacePage;
- (void)buildRoute;
- (void)stopBuildingRoute;

View file

@ -101,6 +101,11 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState)
self.entity.category = [[MapsAppDelegate theApp].m_locationManager formattedSpeedAndAltitude:hasSpeed];
}
[self.placePage configure];
[self refreshPlacePage];
}
- (void)refreshPlacePage
{
[self.placePage show];
[self updateDistance];
}

View file

@ -98,18 +98,12 @@ typedef NS_ENUM(NSUInteger, MWMiPhoneLandscapePlacePageState)
{
UIView * ppv = self.extendedPlacePageView;
UIView * ppvSuper = ppv.superview;
CGPoint const point = [sender translationInView:ppvSuper];
CGSize const size = UIScreen.mainScreen.bounds.size;
CGFloat const height = MIN(size.width, size.height);
CGFloat const offset = MAX(height, kMaximumPlacePageWidth);
CGFloat const x = ppv.center.x + point.x;
if (x > offset / 2.)
return;
ppv.center = CGPointMake(ppv.center.x + point.x, ppv.center.y );
ppv.minX += [sender translationInView:ppvSuper].x;
ppv.minX = MIN(ppv.minX, 0.0);
[sender setTranslation:CGPointZero inView:ppvSuper];
if (sender.state == UIGestureRecognizerStateEnded)
[self cancelSpringAnimation];
UIGestureRecognizerState const state = sender.state;
if (state == UIGestureRecognizerStateEnded || state == UIGestureRecognizerStateCancelled)
{
self.panVelocity = [sender velocityInView:ppvSuper].x;
if (self.panVelocity > 0)
@ -117,10 +111,6 @@ typedef NS_ENUM(NSUInteger, MWMiPhoneLandscapePlacePageState)
else
[self.manager dismissPlacePage];
}
else
{
[self cancelSpringAnimation];
}
}
- (void)willStartEditingBookmarkTitle:(CGFloat)keyboardHeight
@ -151,8 +141,6 @@ typedef NS_ENUM(NSUInteger, MWMiPhoneLandscapePlacePageState)
- (void)setTargetPoint:(CGPoint)targetPoint
{
if (CGPointEqualToPoint(_targetPoint, targetPoint))
return;
_targetPoint = targetPoint;
__weak MWMiPhoneLandscapePlacePage * weakSelf = self;
[self startAnimatingPlacePage:self initialVelocity:CGPointMake(self.panVelocity, 0.0) completion:^

View file

@ -118,25 +118,22 @@ typedef NS_ENUM(NSUInteger, MWMiPhonePortraitPlacePageState)
- (void)setState:(MWMiPhonePortraitPlacePageState)state
{
CGSize const size = UIScreen.mainScreen.bounds.size;
CGFloat const width = MIN(size.height, size.width);
NSString * anchorImageName;
_state = state;
[self updateTargetPoint];
switch (state)
{
case MWMiPhonePortraitPlacePageStateClosed:
[self.actionBar removeFromSuperview];
[self.manager.ownerViewController.view endEditing:YES];
break;
case MWMiPhonePortraitPlacePageStatePreview:
anchorImageName = @"bg_placepage_tablet_normal_";
[self.manager.ownerViewController.view endEditing:YES];
break;
case MWMiPhonePortraitPlacePageStateOpen:
case MWMiPhonePortraitPlacePageStateHover:
anchorImageName = @"bg_placepage_tablet_open_";
break;
}
self.anchorImageView.image = [UIImage imageNamed:[anchorImageName stringByAppendingString:@((NSUInteger)width).stringValue]];
[self setAnchorImage];
}
- (void)updateTargetPoint
@ -196,9 +193,10 @@ typedef NS_ENUM(NSUInteger, MWMiPhonePortraitPlacePageState)
[MWMPlacePageNavigationBar showNavigationBarForPlacePage:self];
else
[MWMPlacePageNavigationBar dismissNavigationBar];
[sender setTranslation:CGPointZero inView:ppvSuper];
if (sender.state == UIGestureRecognizerStateEnded)
[self cancelSpringAnimation];
UIGestureRecognizerState const state = sender.state;
if (state == UIGestureRecognizerStateEnded || state == UIGestureRecognizerStateCancelled)
{
self.panVelocity = [sender velocityInView:ppvSuper].y;
CGFloat const estimatedYPosition = [MWMSpringAnimation approxTargetFor:ppv.frame.origin.y velocity:self.panVelocity];
@ -213,10 +211,6 @@ typedef NS_ENUM(NSUInteger, MWMiPhonePortraitPlacePageState)
else
[self.manager dismissPlacePage];
}
else
{
[self cancelSpringAnimation];
}
}
- (IBAction)didTap:(UITapGestureRecognizer *)sender
@ -227,15 +221,12 @@ typedef NS_ENUM(NSUInteger, MWMiPhonePortraitPlacePageState)
case MWMiPhonePortraitPlacePageStateClosed:
self.state = MWMiPhonePortraitPlacePageStatePreview;
break;
case MWMiPhonePortraitPlacePageStatePreview:
self.state = MWMiPhonePortraitPlacePageStateOpen;
break;
case MWMiPhonePortraitPlacePageStateOpen:
case MWMiPhonePortraitPlacePageStateHover:
self.state = MWMiPhonePortraitPlacePageStatePreview;
[self.manager.ownerViewController.view endEditing:YES];
break;
}
}
@ -252,6 +243,29 @@ typedef NS_ENUM(NSUInteger, MWMiPhonePortraitPlacePageState)
[self updateTargetPoint];
}
- (void)setAnchorImage
{
NSString * anchorImageName = nil;
switch (self.state)
{
case MWMiPhonePortraitPlacePageStateClosed:
break;
case MWMiPhonePortraitPlacePageStatePreview:
anchorImageName = @"bg_placepage_tablet_normal_";
break;
case MWMiPhonePortraitPlacePageStateOpen:
case MWMiPhonePortraitPlacePageStateHover:
anchorImageName = @"bg_placepage_tablet_open_";
break;
}
if (anchorImageName)
{
CGSize const size = UIScreen.mainScreen.bounds.size;
CGFloat const width = MIN(size.height, size.width);
self.anchorImageView.image = [UIImage imageNamed:[anchorImageName stringByAppendingString:@((NSUInteger)width).stringValue]];
}
}
#pragma mark - Properties
- (void)setTargetPoint:(CGPoint)targetPoint

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D131" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWMPlacePage">
@ -17,7 +17,7 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="498"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_placepage_tablet_normal" id="a4c-bA-qa5">
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="a4c-bA-qa5">
<rect key="frame" x="0.0" y="0.0" width="320" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
@ -118,7 +118,6 @@
</panGestureRecognizer>
</objects>
<resources>
<image name="bg_placepage_tablet_normal" width="320" height="22"/>
<image name="img_direction" width="32" height="32"/>
</resources>
<simulatedMetricsContainer key="defaultSimulatedMetrics">