AppShare界面仿写总结

Posted Billy Miracle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AppShare界面仿写总结相关的知识,希望对你有一定的参考价值。

本周我完成了appshare的一些任务,部分功能展示如下:

开机界面

注册界面

主界面
搜索界面

文章上传界面


私信界面

总结:

在本周任务的进行过程中,我首先复习了有关传值的知识,这样才能把注册界面的信息传回登录界面。之后学习了键盘显示后界面的上移,这个在后面是十分重要的。
在页面viewDidLoad函数中加入:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil];//键盘的弹出
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];//键盘的消失

再添加方法:

//键盘显示的时候的处理
- (void)keyboardWasShown:(NSNotification*)aNotification {
    //获得键盘的大小
    NSDictionary* info = [aNotification userInfo];
    CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    [UIView animateWithDuration:0.25 animations:^{
        [self.view setFrame:CGRectMake(0, -keyboardSize.height / 4 , selfWidth, selfHeight)];
    }];
}

//键盘消失的时候的处理
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
    [UIView animateWithDuration:0.25 animations:^{
        [self.view setFrame:CGRectMake(0, 0 , selfWidth, selfHeight)];
    }];
}

这样在键盘显示后就可以实现界面上移。

主界面:

主界面我没有使用tableView。上面是一个轮播图,下面的几个文章都是按钮,第一个文章设计了点击事件,可以点进去,进入后里面的点赞数浏览量等参数与主页面相同,同时,每点击进入一次,浏览量加一。主界面每个点赞按钮可以点赞或取消点赞。

搜索界面:

搜索界面的选项按钮可以选中或取消选中。此外,设定了输入大白并搜索可以跳转到大白的搜索界面。

文章界面:


文章界面使用了在scrollView上套用tableView的方法,这里,我没再使用button,而是使用了自定义cell来创建这些布局相同的视图。这里的点赞按钮同样可以点按和取消。文章上传界面套用了上周网易云中上传头像的功能,可以在照片墙选择图片并将首图传回,显示图片数量。

在这里我新学习了折叠cell,就是选择作品类型的地方。
点击折叠按钮,改变tableView的大小,点击cell,改变tableView的数据数组顺序,将点击cell的内容放于首位即可。
viewDidLoad中:

_classTableView = [[UITableView alloc] initWithFrame:CGRectMake(selfWidth / 2 + 20, 80, 140, 30)];
    _classTableView.delegate = self;
    _classTableView.dataSource = self;
    _classTableView.bounces = NO;
    [_classTableView.layer setMasksToBounds:YES];
    [_classTableView.layer setCornerRadius:6];
    [_classTableView.layer setBorderWidth:0];
    [self.view addSubview:_classTableView];
    
    _foldButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _foldButton.frame = CGRectMake(selfWidth / 2 + 130, 80, 30, 30);
    [_foldButton setImage:[UIImage imageNamed:@"fold.png"] forState:UIControlStateNormal];
    [_foldButton addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:_foldButton];
        
    _selected = NO;
        
    _textArray = [[NSMutableArray alloc] initWithObjects:@"原创作品",@"设计资料",@"授权转载",@"设计教程",@"设计师观点", nil];
- (void) press {
    if (_selected) {
        _selected = NO;
        //折叠
        _classTableView.frame = CGRectMake(_classTableView.frame.origin.x, _classTableView.frame.origin.y, _classTableView.frame.size.width, _classTableView.frame.size.height / 5);
        [_foldButton setImage:[UIImage imageNamed:@"fold.png"] forState:UIControlStateNormal];
    } else {
        _selected = YES;
        //展开
        _classTableView.frame = CGRectMake(_classTableView.frame.origin.x, _classTableView.frame.origin.y, _classTableView.frame.size.width, _classTableView.frame.size.height * 5);
        [_foldButton setImage:[UIImage imageNamed:@"extend.png"] forState:UIControlStateNormal];
    }
    [_classTableView reloadData];
}

活动界面:

自定义了cell

个人信息界面:

点击上面带头像的cell或者选择设置里面基本信息cell都可以进入个人基本资料的界面
里面的性别按钮可以点按
私信界面:
要通过使用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSAttributedStringKey, id> *)attributes context:(nullable NSStringDrawingContext *)context API_AVAILABLE(macos(10.11), ios(7.0));函数自动生成输入文字的UILabel的大小。
此外,还要在输入后自动移到底部,使得新加数据加出来,要使用另一个方法:- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
部分代码如下:
点击send按钮:

-(void) send {
    if (![_inputTextField.text isEqualToString:@""]) {
        [_arrayRight addObject:_inputTextField.text];
        [_arrayLeft addObject:_inputTextField.text];
        
        CGSize sizeLeft = [self size:_inputTextField.text font:[UIFont systemFontOfSize:16] maxSize:CGSizeMake(selfWidth / 2, MAXFLOAT)];
        
        NSNumber *num = [NSNumber numberWithFloat:sizeLeft.width];
        NSNumber *num2 = [NSNumber numberWithFloat:sizeLeft.height];
        [_leftSizeWidthArray addObject:num];
        [_leftSizeHeightArray addObject:num2];
        
        CGSize sizeRight = [self size:_inputTextField.text font:[UIFont systemFontOfSize:16] maxSize:CGSizeMake(selfWidth / 2, MAXFLOAT)];
        
        NSNumber *num3 = [NSNumber numberWithFloat:sizeRight.width];
        NSNumber *num4 = [NSNumber numberWithFloat:sizeRight.height];
        [_rightSizeWidthArray addObject:num3];
        [_rightSizeHeightArray addObject:num4];
        
        
        _inputTextField.text = @"";
        [_mainTableView reloadData];
        
        NSInteger s = [_mainTableView numberOfSections]; //有多少组
        NSInteger r = [_mainTableView numberOfRowsInSection:s - 1]; //最后一组有多少行
        NSIndexPath *ip = [NSIndexPath indexPathForRow:r-1 inSection:s-1]; //取最后一行数据
        [_mainTableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:YES]; //滚动到最后一行
    }
}

以上是关于AppShare界面仿写总结的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 一起来仿写微信APP之一首页列表视图

SwiftUI - 一起来仿写微信APP之一首页列表视图

知乎首页的简单仿写

C#常见问题总结

案例:仿写小米导航栏

python常用代码片段总结