Преглед изворни кода

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 година
родитељ
комит
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;