2014-12-15 09:50:33 woaifen3344 阅读数 3868
  • 苹果iOS应用UI控件开发

    本视频是传智播客iOS学院精心录制的免费精华版UI基础视频,该视频特点在于较大程度保证了知识点的完整性,视频的起点都是针对有一定OC基础的同学

    14109 人正在学习 去看看 传智

有些应用会制作一些悬浮条,即在滚动到某个位置以上是,把某个区域悬浮在最顶上,当向下滚动到指定位置时,又自由地滚动着。


原理很简单。

#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  if (scrollView == _scrollView) {
      if (_scrollView.contentOffset.y >= 218) {
        _overView.hidden = NO;
        [self.view bringSubviewToFront:_overView];
      } else if (_scrollView.contentOffset.y < 218) {
        _overView.hidden = YES;
      }
    }
}

这里的原理就是创建了额外的一份需要悬浮地控件,当scrollView滚动到我指定的位置时,

就让一模一样的_overView出现,由于长得一模一样,根本看不出来。

当滚动到小于指定位置时,就隐藏掉,由于 长得一模一样,根本看不出来变化,因此就达到了我们要的效果。

2019-04-17 10:05:15 chase20150628 阅读数 29
  • 苹果iOS应用UI控件开发

    本视频是传智播客iOS学院精心录制的免费精华版UI基础视频,该视频特点在于较大程度保证了知识点的完整性,视频的起点都是针对有一定OC基础的同学

    14109 人正在学习 去看看 传智

iOS应用程序的基础设置

1.LaunchScreen文件

  • LaunchScreen文件实在Xcode7推出的,主要是设置应用程序的启动图片,其实现原理:在LaunchScreen设置好图片之后,系统会自动截取这张图片,作用应用程序的启动图片

查看生成的启动图片的方式

获取⽅方法: NSLog(@"%@",NSHomeDirectory());

找到Library->Caches->Snapshots⽬目录下⾯面.最后⼀一层就是程序⾃自动⽣生成的图⽚片.

启动文件

  • 如果没有这是启动图片,APP就会出现界面显示不全的问题

没有设置启动
###2.info.plist文件

  • 它是应用系统的配置文件,可以设置应用的许多东西,比如:应用名称,应用的标识,及版本号等

在这里插入图片描述

  • 权限设置

麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?

相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?

相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?

通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?

蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?

语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?

日历权限:Privacy - Calendars Usage Description

定位权限:Privacy - Location When In Use Usage Description

定位权限: Privacy - Location Always Usage Description

位置权限:Privacy - Location Usage Description

媒体库权限:Privacy - Media Library Usage Description

健康分享权限:Privacy - Health Share Usage Description

健康更新权限:Privacy - Health Update Usage Description

运动使用权限:Privacy - Motion Usage Description

音乐权限:Privacy - Music Usage Description

提醒使用权限:Privacy - Reminders Usage Description

Siri使用权限:Privacy - Siri Usage Description

电视供应商使用权限:Privacy - TV Provider Usage Description

视频用户账号使用权限:Privacy - Video Subscriber Account Usage Description

面部ID权限 :Privacy - Face ID Usage Description

保存图片到相册 : Privacy - Photo Library Additions Usage Description

  • 与之对应的info.plist的代码是
<key>NSAppleMusicUsageDescription</key>
    <string>App需要您的同意,才能访问媒体资料库</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>App需要您的同意,才能访问蓝牙</string>
    <key>NSCalendarsUsageDescription</key>
    <string>App需要您的同意,才能访问日历</string>
    <key>NSCameraUsageDescription</key>
    <string>App需要您的同意,才能访问相机</string>
    <key>NSHealthShareUsageDescription</key>
    <string>App需要您的同意,才能访问健康分享</string>
    <key>NSHealthUpdateUsageDescription</key>
    <string>App需要您的同意,才能访问健康更新 </string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>App需要您的同意,才能始终访问位置</string>
    <key>NSLocationUsageDescription</key>
    <string>App需要您的同意,才能访问位置</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>App需要您的同意,才能在使用期间访问位置</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>App需要您的同意,才能访问麦克风</string>
    <key>NSMotionUsageDescription</key>
    <string>App需要您的同意,才能访问运动与健身</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>App需要您的同意,才能访问相册</string>
    <key>NSRemindersUsageDescription</key>
    <string>App需要您的同意,才能访问提醒事项</string>

###3.pch文件

  • pch文件的创建和设置 command+n创建选择

在这里插入图片描述

  • 生成pch文件

在这里插入图片描述

  • pch文件的路径配置(绝对路径和相对路径)

在这里插入图片描述

相对路径和绝对路径

在这里插入图片描述

  • pch处理判断

在这里插入图片描述

#ifndef  __OBJC__
//判断是不是OC文件,因为在项目中有可能使用到其他类型的语言,比如:c,c++等

#endif 
2016-07-11 11:55:39 qiuxuewei2012 阅读数 5480
  • 苹果iOS应用UI控件开发

    本视频是传智播客iOS学院精心录制的免费精华版UI基础视频,该视频特点在于较大程度保证了知识点的完整性,视频的起点都是针对有一定OC基础的同学

    14109 人正在学习 去看看 传智

在项目中可能会有这种需求,即在一个界面最顶层需要一个按钮,这个按钮可能是发布信息功能,也可能是回到顶部.这样我们可以使用UIwindow这个神奇的控件实现,很简单.

完整项目源码:
https://github.com/qxuewei/XWSuspendBtn

最终实现效果如下:
这里写图片描述

实现逻辑:
1.在需要出现悬浮按钮的类中声明按钮UIButton属性和UIWindow属性

/** window */
@property (nonatomic, strong) UIWindow *window;
/** 悬浮按钮 */
@property (nonatomic, strong) UIButton *button;

2.创建UIWindow以及悬浮按钮方法

-(void)creatSuspendBtn{
    //悬浮按钮
    _button = [UIButton buttonWithType:UIButtonTypeCustom];
    [_button setImage:[UIImage imageNamed:@"plus"] forState:UIControlStateNormal];
    CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
    CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
    _button.frame = CGRectMake(0,0, 64, 64);
    [_button addTarget:self action:@selector(suspendBtnClick) forControlEvents:UIControlEventTouchUpInside];


   //添加悬浮按钮方式一(直接添加):
  //  _button.frame = CGRectMake(screenWidth*0.5-28, screenHeight-74, 56, 56);
  //  [_button addTarget:self action:@selector(suspendBtnClick) forControlEvents:UIControlEventTouchUpInside];
    //[self.view addSubview:_button];
    //[self.view bringSubviewToFront:_button];


    //添加悬浮按钮方式二:(利用UIWindow)
    _button.frame = CGRectMake(0,0, 56, 56);
    [_button addTarget:self action:@selector(suspendBtnClick) forControlEvents:UIControlEventTouchUpInside];

    //悬浮按钮所处的顶端UIWindow
    _window = [[UIWindow alloc] initWithFrame:CGRectMake(screenWidth*0.5-28, screenHeight-54, 56, 56)];
    //使得新建window在最顶端
    _window.windowLevel = UIWindowLevelAlert + 1;
    _window.backgroundColor = [UIColor clearColor];
    [_window addSubview:_button];
    //显示window
    [_window makeKeyAndVisible];
}

3.初始化视图时创建悬浮按钮

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self.mainTableView setDelegate:self];
    [self.mainTableView setDataSource:self];

    //延时加载window,注意我们需要在rootWindow创建完成之后再创建这个悬浮的按钮
    [self performSelector:@selector(creatSuspendBtn) withObject:nil afterDelay:0.2];

}

项目github地址:
https://github.com/qxuewei/XWSuspendBtn

2016-05-16 21:02:17 u011993697 阅读数 5186
  • 苹果iOS应用UI控件开发

    本视频是传智播客iOS学院精心录制的免费精华版UI基础视频,该视频特点在于较大程度保证了知识点的完整性,视频的起点都是针对有一定OC基础的同学

    14109 人正在学习 去看看 传智

需求

在一个app应用的最顶部添加一个悬浮窗,就像ios系统AssistiveTouch 可以左右滑动,但是最终会停在左边或右边。

实现思路

在应用的视图的最顶层添加一个UIWindow,用这个UIWindow 充当悬浮窗,给UIWindow添加移动的手势监听,让悬浮窗随着手指移动,释放的时候,让它以动画的方式靠边

代码

    //悬浮窗测试
    //创建一个悬浮窗口
    mwindow = [[AssistiveTouch alloc]initWithFrame:CGRectMake(100, 200, 40, 40) imageName:@"1.png"];
    //ios9 window要设置rootview 不然崩溃
    UIViewController *controller = [[UIViewController alloc] init];
    mwindow.rootViewController = controller;
    //展示悬浮窗。。
    [self.window makeKeyAndVisible];
        //添加移动的手势
        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(locationChange:)];
        pan.delaysTouchesBegan = YES;
        [self addGestureRecognizer:pan];
//改变位置
-(void)locationChange:(UIPanGestureRecognizer*)p
{
    //[[UIApplication sharedApplication] keyWindow]
    CGPoint panPoint = [p locationInView:[[UIApplication sharedApplication] keyWindow]];
    if(p.state == UIGestureRecognizerStateBegan)
    {
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(changeColor) object:nil];
        _imageView.alpha = 0.8;
    }
    else if (p.state == UIGestureRecognizerStateEnded)
    {
        [self performSelector:@selector(changeColor) withObject:nil afterDelay:4.0];
    }
    if(p.state == UIGestureRecognizerStateChanged)
    {
        self.center = CGPointMake(panPoint.x, panPoint.y);
    }
    else if(p.state == UIGestureRecognizerStateEnded)
    {
        if(panPoint.x <= kScreenWidth/2)
        {
            if(panPoint.y <= 40+HEIGHT/2 && panPoint.x >= 20+WIDTH/2)
            {
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(panPoint.x, HEIGHT/2);
                }];
            }
            else if(panPoint.y >= kScreenHeight-HEIGHT/2-40 && panPoint.x >= 20+WIDTH/2)
            {
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(panPoint.x, kScreenHeight-HEIGHT/2);
                }];
            }
            else if (panPoint.x < WIDTH/2+15 && panPoint.y > kScreenHeight-HEIGHT/2)
            {
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(WIDTH/2, kScreenHeight-HEIGHT/2);
                }];
            }
            else
            {
                CGFloat pointy = panPoint.y < HEIGHT/2 ? HEIGHT/2 :panPoint.y;
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(WIDTH/2, pointy);
                }];
            }
        }
        else if(panPoint.x > kScreenWidth/2)
        {
            if(panPoint.y <= 40+HEIGHT/2 && panPoint.x < kScreenWidth-WIDTH/2-20 )
            {
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(panPoint.x, HEIGHT/2);
                }];
            }
            else if(panPoint.y >= kScreenHeight-40-HEIGHT/2 && panPoint.x < kScreenWidth-WIDTH/2-20)
            {
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(panPoint.x, 480-HEIGHT/2);
                }];
            }
            else if (panPoint.x > kScreenWidth-WIDTH/2-15 && panPoint.y < HEIGHT/2)
            {
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(kScreenWidth-WIDTH/2, HEIGHT/2);
                }];
            }
            else
            {
                CGFloat pointy = panPoint.y > kScreenHeight-HEIGHT/2 ? kScreenHeight-HEIGHT/2 :panPoint.y;
                [UIView animateWithDuration:0.2 animations:^{
                    self.center = CGPointMake(320-WIDTH/2, pointy);
                }];
            }
        }
    }
}
2015-06-17 11:51:50 javaskyhr 阅读数 4321
  • 苹果iOS应用UI控件开发

    本视频是传智播客iOS学院精心录制的免费精华版UI基础视频,该视频特点在于较大程度保证了知识点的完整性,视频的起点都是针对有一定OC基础的同学

    14109 人正在学习 去看看 传智

由于项目的需要,需要实现的一个悬浮窗口 ,显示在整个应用界面。

思路一 另创建一个类 继承 uiwindow 设置成为 alter ,使用

makeKeyAndVisible 显示在界面上, 这种方法效果在竖屏上面效果很好,开始的时候感觉 很不错 ,但是问题来了 后面发现支持横屏的话,

这种方法 就会把你坑爽,我一直希望使用这种方法 支持横屏 ,但是我失败了 ,在这个window下面如果是横屏,window 的布局还是竖屏的倒过去的样子,很坑人。

 如果你在uiwindow上面布局的话 默认是竖屏,解决的话只能使用controller ,但是 悬浮窗口 就不好实现了。

思路二 在keywindow 上面添加 view ,将view设在最上面

方法

bringSubviewToFront   将view置顶

不能贯穿整个应用  但是足够使用了

网上资料很少,弄了好久,顺然简简单单几句,想想走了好多绕路,弄了很长时间。还有一个问题 如果一个一个view 多次使用addsubview 添加同一个view 只会添加一次,我不得不说苹果优化的很好。

在实现悬浮窗口的时候还要做的就是手势问题 滑动手势  UIPanGestureRecognizer

ios应用白名单打包

阅读数 399

没有更多推荐了,返回首页