999yzc亚洲城在线娱乐城iOS hidesBottomBarWhenPushed属性,隐藏tabBar代码逻辑

( 999yzc亚洲城在线娱乐城 )

想在baseViewController基类里做判断隐藏tabBar的逻辑,不知道应该写在哪里比较好,如何判断?我想到的是用navigationController.viewControllers.count的数量,但会涉及到两个viewContoller间声明周期的交替,在viewwillAppear和viewWillDisappear里写的,写的有问题,请问如何判断这个比较好,或者隐藏tabbar在哪里写比较好,谢谢

写在init方法;

个人觉得在navigation的代理方法里。

- voidnavigationController:UINavigationController *navigationController willShowViewController:UIViewController *viewController animated:BOOLanimated {
     首先获取程序的主窗口
     UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow
     //获取tabBarVC
      UITabeBarController *tabBarVC = UITabBarController*keyWindow.rootViewController;
     //移除系统的tabBarButton
     forUIView *tabBarButton in tabBarVC.tabBar.subviews {
          if [tabBarButton isKindOfClass:NSClassFromString@“UITabBarButton”]{
               [tabBarButton removeFromSuperview];
          }
     }
}

应该写在layoutsubviews 里面

我也是在 nav 里面做这件事

- voidpushViewController:UIViewController *viewController animated:BOOLanimated
{
    if self.childViewControllers.count >= 1 {
        viewController.hidesBottomBarWhenPushed = YES;
    }

    [super pushViewController:viewController animated:animated];
}

CocoaTouch 在一个NavigationController进行Push操作的时候,隐藏TabBar的方式,应该是调用的sendSubviewToBack这个方法把TabBar给放到后面去。我在自定义转场动画时,通过这种方式做到和苹果默认的一样的效果。你可以试试。

let needPushTabBar = toVC.navigationController?.tabBarController != nil && toVC.hidesBottomBarWhenPushed && toVC.navigationController?.childViewControllers.count == 2
        
        if needPushTabBar {
            toVC.navigationController?.tabBarController?.view.sendSubviewToBacktabBar!
        }

/**
 *  重写push方法实现界面跳转后的各种设置
 */
- voidpushViewController:UIViewController *viewController animated:BOOLanimated{
    if self.childViewControllers.count > 0 {
        // push跳转后隐藏底部TabBar栏
        viewController.hidesBottomBarWhenPushed = YES;
    }
    
    // 先设置属性,再调用super的push方法,避免设置的属性被覆盖
    [super pushViewController:viewController animated:animated];
}

(看完/读完)这篇文章有何感想! 999yzc亚洲城在线娱乐城的分享…

www.999yzc.comiOS APP 打包时候的问题

( www.999yzc.com )

如上所示问题,我猜是不是因为我在公司的企业级账号中的权限是member而不是admin的原因,证书的p12
文件是别人发给我的。。。T T

我找到问题了 原来是我用企业级账号在导app store的包,难怪出错。。。谢谢各位。。

别人电脑上生成的p12文件,你是用不了的,描述文件和p12文件要对应的,不然会不识别的。。

这是因为你的描述文件不对,在这个页面的前一个页面应该有一个选择 team一个是企业帐号,一个是个人帐号有可能名字一样,你换成另外一个应该就可以了

  1. 尽量避免使用 Xcode 的自动解决与证书相关的问题, 它可能取消掉之前已经创建好的证书. 还好你不是 Admin

  2. 这种情况, 你应该找你们的 Admin 把你需要使用到的 开发证书.p12 发布证书.p12 从 他的电脑上导出发给你. (可能还需要描述文件之类的)


要是你真的把有用的证书取消掉了…… -。-

(看完/读完)这篇文章有何感想! www.999yzc.com的分享…

亚洲城官方网站通过UIViewAnimation改变了View的frame后部分位置不响应原来响应的Tap点击手势

( 亚洲城官方网站 )

如题所诉,我希望通过点击手势改变了该View的大小,但是改变了以后,发现View变大部分位置不响应原来响应的Tap点击手势

将原来的tap事件移除重新设置即可

(看完/读完)这篇文章有何感想! 亚洲城官方网站的分享…

亚洲城官方网站对于UIView透明渐变显示

( 亚洲城官方网站 )

有这么一个关于用户体验的需求,我想把一个自定义的View显示的时候达到从中间向左右两侧alpha值逐渐减小(即透明度逐渐增加)的效果。类似下图这种文字消失的感觉:

这里是MarqueeLabel类库中实现的效果,其原理大概是利用了CALayer中的mask遮罩,但是自己从来没有接触过,求大神讲解改效果是如何实现的。

用一个:CAGradientLayer 设置好渐变内容及方向
注意:渐变头尾都是clearColor,中间可以随意,不透明即可。
这个例子中,可以是这样:
位置:[0, 0.05, 1]
颜色:[clearColor, whiteColor, whiteColor]
起始点:[0,0.5] -> [1,0.5] 表示
自定的UILabel或者View,添加设置 layer.mask = gradientLayer 即可

(看完/读完)这篇文章有何感想! 亚洲城官方网站的分享…

亚洲城官方网站输入人数后如何改变image

( 亚洲城官方网站 )

![图片上传中…]

问题是这样的:点击cell 然后cell的图片会改变,同时吧image设置成可以交互的状态,然后增加了alert对话框,这些都没问题,但是我需要在输入数字之后改变image的图片,这个应该怎么去实现?

你用的应该是 UICollectionView 吧,你每个 Cell 的图片应该是在 cellForItemAtIndexPath 这个回调里面根据这个 Cell 对应的 Model 数据(比如 imagePath 之类)设置。当你通过 Alert 对话框改变了数字后,你可以在 AlertAction 的响应方法里修改 Cell 对应的数据(imagePath 之类),然后 reloadData 即可。

还有一种思路是,你点击 Cell 时可以拿到这个 Cell 的 indexPath,然后当你通过 Alert 对话框改变了数字后,你可以在 AlertAction 的响应方法中拿着这个 indexPath 去调用 cellForItemAtIndexPath 取到 Cell,然后拿着这个 Cell 对象去修改它的图片即可。

在alert点确定的回调方法setImage啊

cell里写一个协议给view controller回调

在AlertAction的BLOCK里设置

直接设置数据完成之后reloadData,这个最简单

设置完成后使用reload方法即可 这个功能的实现 可以通过代理自定义Delegate或者使用block实现 当然通知也行 只是告诉view需要reload这个事件

(看完/读完)这篇文章有何感想! 亚洲城官方网站的分享…

www.999yzc.comrespondsToSelector: 和 conformsToProtocol:的区别

( www.999yzc.com )

首先,我的理解是:
(1)conformsToProtocol:@protocol 是用来检查对象是否实现了指定协议类的方法;
(2)respondsToSelector:@selector 用于判断某个类/实例包括基类中是否包含某个方法,仅仅判断方法名是否有和@selector…中的方法名一致的,而不关注该方法是否有实现,是这样吗???

我主要是对(2)有疑惑,产生疑惑的原因是:
// 首先定义一个分类
// @interface NSArray MutableDeepCopy
// – NSMutableArray *mutableDeepCopyOfArray;
// @end

@implementation NSArray MutableDeepCopy

// – NSMutableArray *mutableDeepCopyOfArray {


NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[self count]];
for int i = 0; i < [self count]; i++ {
    id oneValue = [self objectAtIndex:i];
    id oneCopy = nil;
    if [oneValue respondsToSelector:@selectormutableDeepCopyOfArray] {
        oneCopy = [oneValue mutableDeepCopyOfArray];
    }
    else if [oneValue respondsToSelector:@selectormutableCopy] {
        oneCopy = [oneValue mutableCopy];
    }

    if oneCopy == nil {
        oneCopy = [oneValue copy];
    }
    [newArray addObject:oneCopy];
}
return newArray;

}
@end

// – voidtouchesBegan:NSSet<UITouch > touches withEvent:UIEvent *event
{

NSMutableArray *arr = [[NSMutableArray alloc]  initWithCapacity:12];
NSNumber *Num = [NSNumber  numberWithInteger:12345];
[arr  addObject:Num];
NSMutableArray *arr2 = [arr  mutableDeepCopyOfArray];

}

// 当数组中包含了NSNumber这种类型时,使用该分类方法执行深拷贝时,会报错;
错误很常见,很好理解,如下:
-[__NSCFNumber mutableCopyWithZone:]: unrecognized selector sent to instance 0xb000000000004d23

当我把 else if [oneValue respondsToSelector:@selectormutableCopy] 换成
else if [oneValue conformsToProtocol:@protocolNSMutableCopying]时,程序正常执行,不报错;

所以,我觉得, respondsToSelector:@selectormutableCopy,仅仅是从调用对象或其父类中,寻找是否有方法名为mutableCopy的方法,只要找到该方法就返回YES,并不强调一定要有mutableCopy方法的实现;而且恰好NSObject中有mutableCopy方法的声明,所以恰好能返回YES,但程序在执行后,崩溃了,因为mutableCopy方法没有实现,即mutableCopyWithZone:方法没有实现;

conformsToProtocol 是检测一个类是不是遵从某个协议,跟该类是不是实现了该协议的方法没什么关系(当然协议里声明称 required 的方法必须得实现)。

respondsToSelector 是检测一个类或者其父类能不能响应某个消息。以你的例子里,NSObject 是可以响应 mutableCopy 消息的,NSNumber 是 NSObject 的子类,所以 respondsToSelector 返回 true 是没有问题的。respondsToSelector 并不是只检查了方法名,不是有方法声明但是没有实现也可以。它是要求必须要有实现的。 NSObject 类里是有 mutableCopy 方法的实现的,如文档里所说:
Returns the object returned by mutableCopyWithZone:.
This is a convenience method for classes that adopt the NSMutableCopying protocol. An exception is raised if there is no implementation for mutableCopyWithZone:.

所以我们可以猜测一下, NSObject 的 mutableCopy 方法就是去调用 mutableCopyWithZone 并返回结果,如果该类没有实现 mutableCopyWithZone 方法,则抛出异常。

你上面的程序崩溃了,并不是因为 mutableCopy 方法没有被实现, 也不是说 respondsToSelector 返回的结果“不准确“,其实是在意料之内的。

(看完/读完)这篇文章有何感想! www.999yzc.com的分享…

www.999yzc.comiOS 布局问题

( www.999yzc.com )


要实现这样的视图,现在的思路是上半部分的这两块,都没有什么复用的价值
现在考虑的几个方案:

  1. 把两块放到一起,作为tableView.headerView

  2. 下面的一块做为section的headerView

  3. 下面的一块作为一个cell
    不知道有没有什么更优雅的解决方案,谢谢


当前天气:tableHeaderView
概况:sectionHeaderView
每天天气:tableViewCell

布局逻辑同 UITableview 的接口逻辑保持了一致。

个人支持 用 headerview

都可以吧 只是做cell的话会多一步注册cell,另外两个自定义View即可

(看完/读完)这篇文章有何感想! www.999yzc.com的分享…

亚洲城官方网站ios–后台返回信息有字符串和数字组成的,如何获取电话号码,让用户能够点击并且进行拨打?

( 亚洲城官方网站 )

请教个问题:后台返回的json数据,有字符串和数字组成的信息。如何获取其中的电话号码,让其能够点击并且进行拨打。

把json数据获取到后,用NSString统一接受字符串和数字,在对其检测,一般手机号长度都是固定的。就可以 最后将这个子串获取后,在加上tel://就可以了

-voidcallPhone:NSString*phoneNumber{
  NSString *phoneStr=[NSString stringWithFormat:@"tel://%@",phoneNumber];
  NSURL *url=[NSURL URLWithString:phoneStr];
  [[UIApplication sharedApplication] openURL:url];
}

    NSString *string;
    NSString *pattern;

    pattern=@"\d*";

    string=@"s100s110s111jdlfj18203092902lsd";


    NSError *error;
    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

    NSLog@"%@",error;

    [regex enumerateMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange0, string.length usingBlock:^NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop {
     if NSMatchingReportProgress==flags {

      }else{
        /**
         *  系统内置方法
         */
        if NSTextCheckingTypePhoneNumber==result.resultType {
          NSLog@"%@",[string substringWithRange:result.range];
        }
        /**
         *  长度为11位的数字串
         */
        if result.range.length==11 {
          NSLog@"%@",[string substringWithRange:result.range];
        }
      }
    }];

(看完/读完)这篇文章有何感想! 亚洲城官方网站的分享…

999yzc亚洲城在线娱乐城iOS凤凰新闻这种控件跟随滑动的效果是怎么做出来的?

( 999yzc亚洲城在线娱乐城 )

文字颜色渐变我已经做出来了,在- voidscrollViewDidScroll:UIScrollView *scrollView中通过偏移量计算出两个scale,一个递增一个递减,从0~1和从1~0,通过这个scale来动态修改RGB颜色。

这个下划线,在我滚动下面的新闻表格的时候,它会动态的改变frame,偏移的x和宽度。
目前我只是在- voidscrollViewDidEndScrollingAnimation:UIScrollView *scrollView中,在拖动完成后,加了个动画。

我想做出凤凰新闻这样的效果,下划线可以实时跟随改变,不知各位能提供一下思路吗?折腾好久了T_T

下午看你问题之后写的一个模拟凤凰新闻的 demo。
文章:模拟凤凰新闻 | 更复杂的标签动画 – Swift 实现多个 TableView 的侧滑与切换
项目源码:github 仓库:模拟凤凰新闻首页

可以使用pop,或者自己实现

好吧,自己解决了。
其实是个数学问题。。。

具体demo在github上,有需要的可以看一眼,在DDNewsViewController.m文件的scrollViewDidScroll方法中。
https://github.com/iDvel/DDNews

(看完/读完)这篇文章有何感想! 999yzc亚洲城在线娱乐城的分享…