嗨,我正在开发iPhone应用程序,我试图为edittext设置一个边框.我是按照以下方式做到的:
int borderWidth = 1;
CALayer *leftBorder = [CALayer layer];
leftBorder.borderColor = [UIColor whiteColor].CGColor;
leftBorder.borderWidth = borderWidth;
leftBorder.frame = CGRectMake(0, textField.frame.size.height - borderWidth, textField
.frame.size.width, borderWidth);
[textField.layer addSublayer:leftBorder];
Run Code Online (Sandbox Code Playgroud)
我对IB中的edittext设置了一些约束,这样当我旋转设备时,它会根据它调整文本字段的宽度.我的问题是调整edittext的宽度而不是调整我为编辑文本设置的CALayer的宽度.所以我想我必须为我的CALayer项目设置一些约束.但我不知道该怎么做.有人知道吗?需要帮忙.谢谢.
我为自定义视图添加了一个CALayer,代码是
hostedGraphLayer.frame = self.layer.bounds;
[self.layer addSublayer:hostedGraphLayer];
Run Code Online (Sandbox Code Playgroud)
当设备方向改变时,视图的图层的子图层也会旋转,但它不会相对于视图自动调整大小.Layer不具有iOS的autoresize属性.
stackOverFlow中已有的答案之一是CALayers没有根据其UIView的边界变化调整大小.为什么?在这种情况下设置图层在设备方向上的框架更改,图层不会相对于其在旋转开始和结束之间的视图自动调整,这可以通过切换慢动画在模拟器中清楚地看到.
是否有任何修复此"当视图旋转时,它的图层也会旋转,它应该调整其视图".
考虑这个令人钦佩的脚本绘制(圆形)渐变,
https://github.com/paiv/AngleGradientLayer/blob/master/AngleGradient/AngleGradientLayer.m
int w = CGRectGetWidth(rect);
int h = CGRectGetHeight(rect);
Run Code Online (Sandbox Code Playgroud)
然后
angleGradient(data, w, h ..
Run Code Online (Sandbox Code Playgroud)
它循环遍及所有这些
for (int y = 0; y < h; y++)
for (int x = 0; x < w; x++) {
Run Code Online (Sandbox Code Playgroud)
基本上设置颜色
*p++ = color;
Run Code Online (Sandbox Code Playgroud)
但是等等 - 这不是点,而不是像素吗?
你真的会在密集的屏幕上绘制物理像素吗?
这是一个问题:
假设设备的密度为4.像上面的代码一样绘制,但是,在位图上大四倍,然后把它放在矩形中?
这看起来很乱 - 但就是这样吗?
我已经设置了一个UIView,并在视图的图层中添加了几个CALayers作为子图层.甚至可以随着视图调整子图层的大小吗?当我通过设置新帧来调整图层大小时,只有视图的图层会获得新的大小,而不是子图层.我将图层的setNeedsDisplayOnBoundsChange设置为true,将contentsGravity设置为kCAGravityResizeAspect,但到目前为止没有任何帮助.我错过了很明显的东西吗?
谢谢,亲切的问候,汉斯