您的位置:首页 > 编程语言

编程技巧 - 5

2015-09-30 11:54 357 查看
33.获取当前的视图view、窗口window、视图控制器viewController等

在一个与view完全没有联系的类里面出现了一个需要UIView参数的方法:

- (int)GPLoginInView:(UIView *)view;


一开始的想法是封装起来,增加view的参数入口,其实并不用那么复杂!

给出一个例子:

关于视图的宏定义:

/**
@brief 获取keyWindow
*/
#define KEYWINDOW [UIApplication sharedApplication].keyWindow

#define GetKeyWindow  KEYWINDOW ? KEYWINDOW : [[UIApplication sharedApplication].windows objectAtIndex:0]


如何使用:

- (void)showLoginView
{
UIWindow* keyWindow = GetKeyWindow;

if ([keyWindow.rootViewController isKindOfClass:[NSNull class]] || keyWindow.rootViewController == nil)
{
UIView *view = (UIView *)[[keyWindow subviews] firstObject];
[[GPGameSDK defaultGPGame] GPLoginInView:view];
}
else
[[GPGameSDK defaultGPGame] GPLoginInView:keyWindow.rootViewController.view];
}


同样的方法和思想就可以获取当前 UIView UIWindow UIViewController

最重要的是弄清楚当前 UIApplication UIView UIViewController UIWindow 之间的关系和作用,以后系统学习一下!

34.点击按钮要这样写!

[button setSelected:!button.isSelected];

UIButton的这个属性非常好使的,因为不用为此而设立多一个布尔值来全局判断。

35.不写死的时间 (根据屏幕的尺寸)

float durationTime = _flowButton.superview.bounds.size.width * 0.00125f;    //动画持续时间


36.连父视图也不该写死 (根据具体情况)

通常我在一个视图控制器的view上选取view来工作的时候会:self.view , 其实没必要写死,看!

_flowButton.center.x < _flowButton.superview.bounds.size.width
看吧  flowButton.superview 多好~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 编程 skills