Просмотр исходного кода

Add FLEXFloor macro for retina aware rounding.

This allows us to move views to 0.5 point origin values on retina devices.
Ryan Olson лет назад: 12
Родитель
Сommit
5a312d12f8

+ 1 - 1
Classes/Editing/Argument Input Views/FLEXArgumentInputColorView.m

@@ -69,7 +69,7 @@
     
     [self.valueLabel sizeToFit];
     CGFloat valueLabelOriginX = CGRectGetMaxX(self.slider.frame);
-    CGFloat valueLabelOriginY = floor((self.slider.frame.size.height - self.valueLabel.frame.size.height) / 2.0);
+    CGFloat valueLabelOriginY = FLEXFloor((self.slider.frame.size.height - self.valueLabel.frame.size.height) / 2.0);
     self.valueLabel.frame = CGRectMake(valueLabelOriginX, valueLabelOriginY, kValueLabelWidth, self.valueLabel.frame.size.height);
 }
 

+ 5 - 4
Classes/Explorer Toolbar/FLEXExplorerToolbar.m

@@ -9,6 +9,7 @@
 #import "FLEXExplorerToolbar.h"
 #import "FLEXToolbarItem.h"
 #import "FLEXResources.h"
+#import "FLEXUtility.h"
 
 @interface FLEXExplorerToolbar ()
 
@@ -98,8 +99,8 @@
     const CGFloat kToolbarItemHeight = [[self class] toolbarItemHeight];
     self.dragHandle.frame = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, [[self class] dragHandleWidth], kToolbarItemHeight);
     CGRect dragHandleImageFrame = self.dragHandleImageView.frame;
-    dragHandleImageFrame.origin.x = floor((self.dragHandle.frame.size.width - dragHandleImageFrame.size.width) / 2.0);
-    dragHandleImageFrame.origin.y = floor((self.dragHandle.frame.size.height - dragHandleImageFrame.size.height) / 2.0);
+    dragHandleImageFrame.origin.x = FLEXFloor((self.dragHandle.frame.size.width - dragHandleImageFrame.size.width) / 2.0);
+    dragHandleImageFrame.origin.y = FLEXFloor((self.dragHandle.frame.size.height - dragHandleImageFrame.size.height) / 2.0);
     self.dragHandleImageView.frame = dragHandleImageFrame;
     
     
@@ -107,7 +108,7 @@
     CGFloat originX = CGRectGetMaxX(self.dragHandle.frame);
     CGFloat originY = self.bounds.origin.y;
     CGFloat height = kToolbarItemHeight;
-    CGFloat width = floor((CGRectGetMaxX(self.bounds) - originX) / [self.toolbarItems count]);
+    CGFloat width = FLEXFloor((CGRectGetMaxX(self.bounds) - originX) / [self.toolbarItems count]);
     for (UIView *toolbarItem in self.toolbarItems) {
         toolbarItem.frame = CGRectMake(originX, originY, width, height);
         originX = CGRectGetMaxX(toolbarItem.frame);
@@ -136,7 +137,7 @@
     selectedViewColorFrame.size.width = kSelectedViewColorDiameter;
     selectedViewColorFrame.size.height = kSelectedViewColorDiameter;
     selectedViewColorFrame.origin.x = kHorizontalPadding;
-    selectedViewColorFrame.origin.y = floor((kDescriptionContainerHeight - kSelectedViewColorDiameter) / 2.0);
+    selectedViewColorFrame.origin.y = FLEXFloor((kDescriptionContainerHeight - kSelectedViewColorDiameter) / 2.0);
     self.selectedViewColorIndicator.frame = selectedViewColorFrame;
     self.selectedViewColorIndicator.layer.cornerRadius = ceil(selectedViewColorFrame.size.height / 2.0);
     

+ 2 - 2
Classes/Explorer Toolbar/FLEXExplorerViewController.m

@@ -735,8 +735,8 @@ typedef NS_ENUM(NSUInteger, FLEXExplorerMode) {
 {
     CGPoint translation = [movePanGR translationInView:self.selectedView.superview];
     CGRect newSelectedViewFrame = self.selectedViewFrameBeforeDragging;
-    newSelectedViewFrame.origin.x = floor(newSelectedViewFrame.origin.x + translation.x);
-    newSelectedViewFrame.origin.y = floor(newSelectedViewFrame.origin.y + translation.y);
+    newSelectedViewFrame.origin.x = FLEXFloor(newSelectedViewFrame.origin.x + translation.x);
+    newSelectedViewFrame.origin.y = FLEXFloor(newSelectedViewFrame.origin.y + translation.y);
     self.selectedView.frame = newSelectedViewFrame;
 }
 

+ 3 - 3
Classes/Explorer Toolbar/FLEXToolbarItem.m

@@ -115,7 +115,7 @@
     titleSize = CGSizeMake(ceil(titleSize.width), ceil(titleSize.height));
     titleRect.size = titleSize;
     titleRect.origin.y = contentRect.origin.y + CGRectGetMaxY(contentRect) - titleSize.height;
-    titleRect.origin.x = contentRect.origin.x + floor((contentRect.size.width - titleSize.width) / 2.0);
+    titleRect.origin.x = contentRect.origin.x + FLEXFloor((contentRect.size.width - titleSize.width) / 2.0);
     return titleRect;
 }
 
@@ -124,8 +124,8 @@
     CGSize imageSize = self.image.size;
     CGRect titleRect = [self titleRectForContentRect:contentRect];
     CGFloat availableHeight = contentRect.size.height - titleRect.size.height - [[self class] topMargin];
-    CGFloat originY = [[self class] topMargin] + floor((availableHeight - imageSize.height) / 2.0);
-    CGFloat originX = floor((contentRect.size.width - imageSize.width) / 2.0);
+    CGFloat originY = [[self class] topMargin] + FLEXFloor((availableHeight - imageSize.height) / 2.0);
+    CGFloat originX = FLEXFloor((contentRect.size.width - imageSize.width) / 2.0);
     CGRect imageRect = CGRectMake(originX, originY, imageSize.width, imageSize.height);
     return imageRect;
 }

+ 2 - 0
Classes/Utility/FLEXUtility.h

@@ -9,6 +9,8 @@
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKit.h>
 
+#define FLEXFloor(x) (floor([[UIScreen mainScreen] scale] * (x)) / [[UIScreen mainScreen] scale])
+
 @interface FLEXUtility : NSObject
 
 + (UIColor *)consistentRandomColorForObject:(id)object;

+ 1 - 1
Classes/View Hierarchy/FLEXHierarchyTableViewCell.m

@@ -77,7 +77,7 @@
     
     CGRect circleFrame = self.colorCircleImageView.frame;
     circleFrame.origin.x = CGRectGetMaxX(depthIndicatorFrame);
-    circleFrame.origin.y = self.textLabel.frame.origin.y + floor((self.textLabel.frame.size.height - circleFrame.size.height) / 2.0);
+    circleFrame.origin.y = self.textLabel.frame.origin.y + FLEXFloor((self.textLabel.frame.size.height - circleFrame.size.height) / 2.0);
     self.colorCircleImageView.frame = circleFrame;
     
     CGRect textLabelFrame = self.textLabel.frame;