账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么使用masonry不能立即获取frame?
    53
    0

    第一段代码:

    [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(UIEdgeInsetsMake(0, 0, 0, 0));
    }];
    NSLog(@"%@", self.scrollView);

    结果是:<UIScrollView: 0x7fcae504ba00; frame = (0 0; 0 0);

    第二段代码:

    [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(UIEdgeInsetsMake(0, 0, 0, 0));
    }];
    // 延迟0.1秒后获取frame
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"%@", self.scrollView);
    });

    结果是:<UIScrollView: 0x7fad83820a00; frame = (0 0; 375 667);

    问:

    为什么延迟0.1秒后就能获取到正确的frame了?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 筱仲马 普通会员 1楼

      Masonry 是一个使用 CSS 的框架,它提供了许多特性,包括网格布局、层叠样式和交互式效果。Masonry 是通过 CSS 类来定义网格布局的,每个网格项目由一个单独的类定义。当您在页面上添加一个新的网格项目时,Masonry 会创建一个新的 CSS 类来表示该网格项目,并将该类应用到您想要添加网格项目的位置。

      例如,如果您想要在页面上添加一个网格项目,您可以这样做:

      css .grid-item { position: relative; background-color: #ccc; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); width: 100px; height: 100px; margin: 10px auto; }

      在这个例子中,我们定义了一个名为 .grid-item 的 CSS 类,它表示一个网格项目。我们使用 position: relative; 属性来设置元素相对于其容器的相对定位。我们使用 background-color: #ccc; 属性来设置项目的背景颜色。我们使用 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 属性来设置项目的边框。我们使用 width: 100px;height: 100px; 属性来设置项目的大小。我们使用 margin: 10px auto; 属性来设置项目的对齐方式。

      然后,当您在页面上添加一个新的 .grid-item 类时,Masonry 会创建一个新的 .grid-item 类来表示该网格项目,并将该类应用到您想要添加网格项目的位置。

      注意,Masonry 是一个 CSS 动态框架,这意味着当您在页面上添加新的网格项目时,Masonry 会自动更新网格布局。如果您想要在页面上更改网格布局,您可能需要使用 JavaScript 或 jQuery 来更新CSS类,并使用Masonry API来触发网格布局的更新。

    • 舊言虐心 普通会员 2楼

      Masonry 是一个使用 CSS 的框架,它提供了许多特性,包括网格布局、层叠样式和交互式效果。Masonry 是通过 CSS 类来定义网格布局的,每个网格项目由一个单独的类定义。当您在页面上添加一个新的网格项目时,Masonry 会创建一个新的 CSS 类来表示该网格项目,并将该类应用到您想要添加网格项目的位置。

      例如,如果您想要在页面上添加一个网格项目,您可以这样做:

      css .grid-item { position: relative; background-color: #ccc; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); width: 100px; height: 100px; margin: 10px auto; }

      在这个例子中,我们定义了一个名为 .grid-item 的 CSS 类,它表示一个网格项目。我们使用 position: relative; 属性来设置元素相对于其容器的相对定位。我们使用 background-color: #ccc; 属性来设置项目的背景颜色。我们使用 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 属性来设置项目的边框。我们使用 width: 100px;height: 100px; 属性来设置项目的大小。我们使用 margin: 10px auto; 属性来设置项目的对齐方式。

      然后,当您在页面上添加一个新的 .grid-item 类时,Masonry 会创建一个新的 .grid-item 类来表示该网格项目,并将该类应用到您想要添加网格项目的位置。

      注意,Masonry 是一个 CSS 动态框架,这意味着当您在页面上添加新的网格项目时,Masonry 会自动更新网格布局。如果您想要在页面上更改网格布局,您可能需要使用 JavaScript 或 jQuery 来更新CSS类,并使用Masonry API来触发网格布局的更新。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部