在另一篇文章中,luvieere分享了一种使用 QuartzCore 框架将圆角应用于 TextView 的方法(see post)。在我看来,3D 边框(如 UITextField 上的边框)可以通过图层创建,而不是使用背景图像。
有谁知道是否可以或如何做到这一点?我真的很想找到一种方法来添加 3D 边框,而无需启动图形编辑器并创建 3D 阴影背景。谢谢!
最佳答案
在 View Controller 中:
newCommentBody.layer.cornerRadius = 7;
newCommentBody.clipsToBounds = YES;
新建类TextView继承UITextView
#import "TextView.h"
#import <CoreGraphics/CoreGraphics.h>
#import <CoreGraphics/CGColor.h>
@implementation TextView
-(void) drawRect:(CGRect)rect {
UIGraphicsBeginImageContext(self.frame.size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(currentContext, 1.0); //or whatever width you want
CGContextSetRGBStrokeColor(currentContext, 0.6, 0.6, .6, 1.0);
CGRect myRect = CGContextGetClipBoundingBox(currentContext);
//printf("rect = %f,%f,%f,%f\n", myRect.origin.x, myRect.origin.y, myRect.size.width, myRect.size.height);
float myShadowColorValues[] = {0,0,0,1};
CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef colorRef = CGColorCreate(myColorSpace, myShadowColorValues);
CGContextSetShadowWithColor(currentContext, CGSizeMake(0, -1), 3, colorRef);
// CGContextSetShadow(currentContext, CGSizeMake(0, -1), 3);
CGContextStrokeRect(currentContext, myRect);
UIImage *backgroundImage = (UIImage *)UIGraphicsGetImageFromCurrentImageContext();
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
[myImageView setImage:backgroundImage];
[self addSubview:myImageView];
[backgroundImage release];
UIGraphicsEndImageContext();
}
@end
关于iphone - 如何使用 3D 阴影边框设计 UITextView 的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991836/