相关疑难解决方法(0)

如何在storyBoard中绘制1px线?

众所周知,表视图分隔符非常薄而且美观.有时我们必须在storyboard或nib中构建一些分隔线,最小数量为1,但实际上该线看起来比我们预期的要厚得多.
我的问题是如何在故事板中绘制1px线?

ios

15
推荐指数
2
解决办法
9381
查看次数

如何使用故事板创建宽度为0.5px的线?

我是iOS故事板的新手,谁能告诉我如何创建0.5像素宽的线?我已经阅读过这篇文章:如何创建0.5像素的线宽,我知道如何通过编码来实现它,但是它有更简单的方法,比如使用故事板吗?

storyboard ios

13
推荐指数
4
解决办法
2735
查看次数

如何在iOS中绘制单点线

我想知道绘制单点线的最佳方法是什么?我的目标是在tableViewCell中绘制这一行,使其看起来就像本机单元格分隔符.我不想使用原生分隔符,因为我想制作不同的颜色和不同的位置(不是底部..).

起初我使用1px UIView并将其涂成灰色.但在Retina显示器中它看起来像2px.还尝试使用此方法:

- (void)drawLine:(CGPoint)startPoint endPoint:(CGPoint)endPoint inColor:(UIColor *)color {

    CGMutablePathRef straightLinePath = CGPathCreateMutable();
    CGPathMoveToPoint(straightLinePath, NULL, startPoint.x, startPoint.y);
    CGPathAddLineToPoint(straightLinePath, NULL, endPoint.x, endPoint.y);

    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.path = straightLinePath;
    UIColor *fillColor = color;
    shapeLayer.fillColor = fillColor.CGColor;
    UIColor *strokeColor = color;
    shapeLayer.strokeColor = strokeColor.CGColor;
    shapeLayer.lineWidth = 0.5f;
    shapeLayer.fillRule = kCAFillRuleNonZero;
    [self.layer addSublayer:shapeLayer];
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它在60%的时间里工作..它有什么问题吗?无论如何,我很高兴听到更好的方式.

谢谢.

uitableview ios retina-display

12
推荐指数
1
解决办法
6500
查看次数

视网膜问题:如何使UIView的宽度恰好为1像素而不是2像素?

我知道我们在点而不是像素上操作,在大多数情况下它很方便,但我需要使UIView为1像素而不是2像素高度.因此,如果您在Interaface构建器中拖放一些UIView(分隔线),并使其高度为1px(点),那么它仍然看起来像视网膜屏幕上的2像素大小线(在设备和模拟器上).

我知道视图上有contentScaleFactor属性,它显示的是视网膜(2.0f)与否(1.0f).看起来这些视图的值为1.0f,因此您需要从主屏幕中检索它:

[UIScreen mainScreen].scale; 
Run Code Online (Sandbox Code Playgroud)

这让我回归2.0f.现在,我为此分隔符视图添加了高度约束,添加了检查isRetina的方法并将该行划分为1个像素:

- (void)awakeFromNib{

  [super awakeFromNib];

  CGFloat isRetina = ([UIScreen mainScreen].scale == 2.0f) ? YES : NO;

  if (isRetina) {

    self.separatorViewHeightConstraint.constant /= 2;
  }
}
Run Code Online (Sandbox Code Playgroud)

这有效,我只是不确定使用0.5值是个好主意......

objective-c ios

11
推荐指数
3
解决办法
5817
查看次数

IBDesignables的某种"全球"?

在故事板中有一个UIView,具有约束例如"0.1"比例高度.

想象一下,对于许多不同场景中的视图,您有类似的约束"0.1".

假设您要将值更改为0.1到0.975.

你必须在任何地方单独改变它.

有没有办法使用@IBInspectable和/或约束来形成一种"全局价值"

这样您就可以立即更改所有内容,并在故事板中同时查看结果.

(当然,在运行时你可以在代码中传播它们.但最好在故事板上看到它.)


请注意,Wain的解决方案可以完美地运行:您可以设置一次值,并影响应用程序中的任何位置.但不幸的是,它只在运行时才这样做,你没有在故事板上看到它.

ios uistoryboard nslayoutconstraint ibinspectable

7
推荐指数
1
解决办法
644
查看次数