您的位置:首页 > 移动开发 > 微信开发

ios开发仿写微信视频聊天界面

2017-12-12 18:56 1961 查看
自己开发时需求要求,就自己开发了一个,个人思路:

1、创建View放在window上

self = [super initWithFrame:CGRectMake(0,  SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT)];
self.backgroundColor = [UIColor purpleColor];
id <UIApplicationDelegate> delegate = [[UIApplication sharedApplication] delegate];
if ([delegate respondsToSelector:@selector(window)])
{
self.window = [delegate performSelector:@selector(window)];
}
else
{
self.window = [[UIApplication sharedApplication] keyWindow];
}
[self.window addSubview:self];


2、添加拖拽和显示手势

UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureRecognizer:)];
gesture.delegate = self;
[self addGestureRecognizer:gesture];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGestureRecognizer:)];
[self addGestureRecognizer:tapGesture];
[UIView setAnimationsEnabled:YES];


3、显示View

-(void)show
{
CGRect frame = self.frame;
frame.origin.y = 0;

[UIView animateWithDuration:0.4 animations:^{
self.frame = frame;
}];
}


4、实现拖拽手势

-(void)panGestureRecognizer:(UIPanGestureRecognizer *)recognizer
{
if (!self.isSclae)
{
return;
}
CGPoint point = [recognizer translationInView:recognizer.view.superview];
CGPoint center = CGPointMake(recognizer.view.center.x + point.x,recognizer.view.center.y + point.y);
if (center.x > SCREEN_WIDTH - recognizer.view.frame.size.width/2)
{
center.x = SCREEN_WIDTH - recognizer.view.frame.size.width/2;
}
else if (center.x < recognizer.view.frame.size.width/2)
{
center.x = recognizer.view.fram
b55c
e.size.width/2;
}
else if (center.y < recognizer.view.frame.size.width/2)
{
center.y = recognizer.view.frame.size.width/2;
}
else if (center.y > SCREEN_HEIGHT - recognizer.view.frame.size.width/2)
{
center.y = SCREEN_HEIGHT - recognizer.view.frame.size.width/2;
}
[UIView animateWithDuration:0.1 animations:^{
recognizer.view.center = center;
[recognizer setTranslation:CGPointZero inView:recognizer.view.superview];
} completion:^(BOOL finished) {
_lastPointX = center.x - recognizer.view.frame.size.width/2;
_lastPointY = center.y - recognizer.view.frame.size.height/2;
}];
}


5、实现点击放大的手势

-(void)tapGestureRecognizer:(UITapGestureRecognizer *)recognizer
{
[self.window bringSubviewToFront:self];
[[NSNotificationCenter defaultCenter]postNotificationName:@"ScaleBig" object:nil];
CGRect frame = self.frame;
frame.origin.y = 0;
frame.origin.x = 0;
frame.size.width = SCREEN_WIDTH;
frame.size.height = SCREEN_HEIGHT;
[UIView animateWithDuration:0.2 animations:^{
self.frame = frame;
} completion:^(BOOL finished) {
self.isSclae = NO;

}];
}


6、取消移动

-(void)hidden
{
CGRect frame = self.frame;
frame.origin.y = SCREEN_HEIGHT;

[UIView animateWithDuration:0.5 animations:^{
self.frame = frame;
}completion:^(BOOL finished) {
self.isSclae = NO;
[self removeFromSuperview];
}];
}


7、(1)效果图1



(2)效果图2



(3)效果图3

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: