欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS 仿支付宝支付屏幕亮度变化机制

程序员文章站 2024-02-17 20:30:28
1.首先,在需要实现的界面viewdidload中先保存亮度没有变化之前的亮度,因为这个界面消失之后还要变回原来的亮度,变化亮度也相当于用户的一种设置,所以也要保存一下这个...

1.首先,在需要实现的界面viewdidload中先保存亮度没有变化之前的亮度,因为这个界面消失之后还要变回原来的亮度,变化亮度也相当于用户的一种设置,所以也要保存一下这个状态,因为之后当app在active和非active切换时候需要知道是否需要为用户做这个功能

// 保存原来的亮度
[[nsuserdefaults standarduserdefaults] setobject:@([uiscreen mainscreen].brightness) forkey:@"brightness"];
// 保存状态,需要为用户变化屏幕亮度功能
[[nsuserdefaults standarduserdefaults] setobject:@yes forkey:@"ifneedchangelight"];

2.在viewdidappear中设置需要的亮度

- (void)viewdidappear:(bool)animated
{
  [super viewdidappear:animated];
  if ([uiscreen mainscreen].brightness < 0.8) {
    [uiscreen mainscreen].brightness = 0.8;
  }
}

3.同理viewdiddisappear

- (void):(bool)animated
{
  [super viewdiddisappear:animated];
  // 还原
  [uiscreen mainscreen].brightness = [[[nsuserdefaults standarduserdefaults] objectforkey:@"brightness"] floatvalue];
  [[nsuserdefaults standarduserdefaults] setobject:@no forkey:@"ifneedchangelight"];
}

4.当从底部滑起操作栏和退出app到主界面需要进行恢复和设置相应操作

- (void)applicationwillresignactive:(uiapplication *)application {
  if ([[[nsuserdefaults standarduserdefaults] objectforkey:@"ifneedchangelight"] boolvalue]) {
    [uiscreen mainscreen].brightness = [[[nsuserdefaults standarduserdefaults] objectforkey:@"brightness"] floatvalue];
  }
}
- (void)applicationdidbecomeactive:(uiapplication *)application {
  if ([[[nsuserdefaults standarduserdefaults] objectforkey:@"ifneedchangelight"] boolvalue]) {
    if ([uiscreen mainscreen].brightness < 0.8) {
      // 颜色需要渐变的话需要另外再写
      [uiscreen mainscreen].brightness = 0.8;
    }
  }
}

5.如果需要亮度渐变效果网上有实现的函数,设置亮度直接调函数就可以了

以上所述是小编给大家介绍的ios 仿支付宝支付屏幕亮度变化机制,希望对大家有所帮助