小编Aus*_*tin的帖子

使用自定义模式演示处理呼叫状态栏

问题

我在电话中提出一个UINavigationController(有一个根视图控制器,已经被自然推动)时,我注意到了一些奇怪的行为UIViewControllerAnimatedTransitioning.

  • 如果在显示导航控制器启用了呼叫状态栏,则导航控制器会按预期向下移动其视图.但是当呼叫结束时,控制器不会将其视图向上移动,在状态栏下留下20p的间隙.
  • 如果显示控制器之前启用了通话中状态栏,则控制器根本不会考虑状态栏,而是将44p高导航条中的4p从40p状态栏下方窥视.通话结束后,控制器将其视图向下移动以适应正常的20p状态栏.

*注意:这是在模拟器上测试的,因为它很容易启用/禁用通话状态栏,但测试人员在实际手机上观察到了这种现象.

我的(部分)解决方法

如果状态栏是异常高度,我通过在演示期间调整控制器的框架来解决问题:

@interface CustomAnimationController : NSObject <UIViewControllerAnimatedTransitioning>
@end

@implementation CustomAnimationController

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UIViewController *toController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIView *container = [transitionContext containerView];

    CGRect frame = [transitionContext finalFrameForViewController:toController];
    if (CGRectEqualToRect(frame, CGRectZero))
    {
        // In my experience, the final frame is always a zero rect, so this is always hit
        UIEdgeInsets insets = UIEdgeInsetsZero;
        // My "solution" was to inset the container frame by the difference …
Run Code Online (Sandbox Code Playgroud)

uiview modalviewcontroller ios ios7 ios7-statusbar

34
推荐指数
1
解决办法
2836
查看次数

来自zIndex的UICollectionView顶部单元格未使用重叠单元格选择

我有UICollectionView一些相互重叠的细胞.

我将它们设置zIndexUICollectionViewLayout子类中,UICollectionViewLayoutAttributes因此它们以可视方式显示在所需的顺序中.触摸均匀的命中区域按预期工作,当敲击单元的重叠区域时zIndex,通过该collectionView:didSelectItemAtIndexPath:方法具有更高的单元格.

我转换到UICollectionViewFlowLayout子类,当我转换回第一UICollectionViewLayout个子类zIndex时,在点击重叠区域时,并不总是选择具有更高的单元格.

进一步调查显示,子视图中UICollectionViewCells 的顺序UICollectionView是确定敲击哪个单元格.

我已经写了一个重新排序子视图的方法,但这看起来有点像黑客.

根据细胞在视觉上的显示方式,是否有更好的方法让UICollectionView细胞返回预期的索引路径collectionView:didSelectItemAtIndexPath:

iphone z-index objective-c ios uicollectionview

5
推荐指数
1
解决办法
2333
查看次数

具有多个Windows的UIStatusBar外观

首先,我的应用程序的设置:

大多数应用程序的视图控制器都存在于您的标准导航控制器层次结构中,但我还在主应用程序窗口上有第二个窗口,它主持一个视图控制器(NotificationVC).如果NotificationVC正在显示通知,它将更改状态栏样式以与通知形成对比,但否则它会将样式推迟到主窗口的根视图控制器.

我的问题是主窗口中的更改通常会触发状态栏外观更新(推送,弹出或呈现视图控制器或调用-[UIViewController setNeedsStatusBarAppearanceUpdate])无效.

以下是相关代码NotificationVC:

@implementation NotificationVC

- (UIStatusBarStyle)preferredStatusBarStyle
{
    if (self.isShowingNotification)
    {
        if (self.notificationView.hasDarkBackground)
        {
            return UIStatusBarStyleLightContent;
        }
        else
        {
            return UIStatusBarStyleDefault;
        }
    }
    else
    {
        return [[UIApplication sharedApplication].delegate window].rootViewController.preferredStatusBarStyle;
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

如何让状态栏从主窗口中的一个视图控制器更新?

注意:手动设置状态栏外观(-[UIApplication setStatusBarStyle:])不适用于此应用程序.

uiviewcontroller uiwindow ios uistatusbar

5
推荐指数
1
解决办法
1265
查看次数

如何一次加载UICollectionView的所有单元格?

我有UICollectionView很多细胞.我想加载所有单元格viewDidLoad,但UICollectionView只有当它们可见时才加载它的单元格.

有什么建议?

objective-c cells uicollectionview

5
推荐指数
1
解决办法
3458
查看次数

Git Blame:查看特定用户创作的所有行

可以使用 git blame 来查看单个用户提交的当前代码库中的所有行吗?

git blame

3
推荐指数
1
解决办法
1607
查看次数

由于行数和字符数,UITextView限制文本

我有一个UITextView,我希望最多有两行.

当文本视图到达两行并且它的宽度结束时,我希望它停止接受任何新字符.

我测试过:

UITextView *textView = ...
textView.textContainer.maximumNumberOfLines = 2;
Run Code Online (Sandbox Code Playgroud)

这使得文本视图的UI看起来正确,但它仍然接受新字符,并使文本增长到UI中可见的范围之外.

仅限制字符数不是一个好主意,因为每个字符都有自己的宽度和高度.

我正在使用自动布局.

uitextview uikit uiview ios autolayout

2
推荐指数
1
解决办法
2472
查看次数