Swift/OC에서 View 또는 ImageView에 대한 채팅 메시지의 작은 삼각형 설정
Swift 코드
override func viewDidLoad() {
super.viewDidLoad()
//UIImageView
let showView = UIImageView(frame: CGRectMake(100, 100, 100, 100))
showView.image = UIImage(named: "Snip20160422_3")
showView.layer.mask = test(showView)
self.view.addSubview(showView)
//UIView
let blankView = UIView(frame: CGRectMake(250, 100, 100, 100))
blankView.backgroundColor = UIColor.greenColor()
blankView.layer.mask = test(blankView)
self.view.addSubview(blankView)
}
///
func test(showView: UIView) -> CAShapeLayer {
let viewWidth = CGFloat(CGRectGetWidth(showView.frame))
let viewHeight = CGFloat(CGRectGetHeight(showView.frame))
// , view , , view ,
let rightSpace: CGFloat = 10
//
let topSpace: CGFloat = 30
let point1 = CGPointMake(0, 0)
let point2 = CGPointMake(viewWidth - rightSpace, 0)
let point3 = CGPointMake(viewWidth - rightSpace, topSpace)
let point4 = CGPointMake(viewWidth, topSpace)
let point5 = CGPointMake(viewWidth - rightSpace, topSpace + 10)
let point6 = CGPointMake(viewWidth - rightSpace, viewHeight)
let point7 = CGPointMake(0, viewHeight)
let path = UIBezierPath()
path.moveToPoint(point1)
path.addLineToPoint(point2)
path.addLineToPoint(point3)
path.addLineToPoint(point4)
path.addLineToPoint(point5)
path.addLineToPoint(point6)
path.addLineToPoint(point7)
let layer = CAShapeLayer()
layer.path = path.CGPath
return layer
}
}
OC 코드
- (void)viewDidLoad {
[super viewDidLoad];
UIView *blankView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
blankView.backgroundColor = [UIColor redColor];
blankView.layer.mask = [self testWithView:blankView];
[self.view addSubview:blankView];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(250, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"Snip20160422_3"];
imageView.layer.mask = [self testWithView:blankView];
[self.view addSubview:imageView];
}
- (CAShapeLayer *)testWithView:(UIView *)view
{
CGFloat viewWidth = CGRectGetWidth(view.frame);
CGFloat viewHeight = CGRectGetHeight(view.frame);
CGFloat rightSpace = 10;
CGFloat topSpace = 15;
CGPoint point1 = CGPointMake(0, 0);
CGPoint point2 = CGPointMake(viewWidth-rightSpace, 0);
CGPoint point3 = CGPointMake(viewWidth-rightSpace, topSpace);
CGPoint point4 = CGPointMake(viewWidth, topSpace);
CGPoint point5 = CGPointMake(viewWidth-rightSpace, topSpace+10.);
CGPoint point6 = CGPointMake(viewWidth-rightSpace, viewHeight);
CGPoint point7 = CGPointMake(0, viewHeight);
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:point1];
[path addLineToPoint:point2];
[path addLineToPoint:point3];
[path addLineToPoint:point4];
[path addLineToPoint:point5];
[path addLineToPoint:point6];
[path addLineToPoint:point7];
[path closePath];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path.CGPath;
return layer;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.