获取真实frame
在不用Masonry时,frame在创建UIView时就已经确定,例如:
CGRect frame = CGRectMake(0, 0, 375, 200);
UIView *view = [[UIView alloc] initWithFrame:frame];
或者
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0, 0, 375, 200);
但是使用Masonry时,坐标是根据约束计算得到的。在init方法里,view的frame是(0, 0, 0, 0),这不是view的真实frame。有时候会遇到问题,比如希望给view加一个底部的border
[self addOneSidedBorderWithFrame:CGRectMake(0, self.frame.size.height-height, self.frame.size.width, height) andColor:color]
所以,需要能够获取到view的真实frame,正确的时机应该是在layoutSubviews方法里,因为这时候应该开始layout subviews,Masonry已经计算出了真实的frame
-(void) layoutSubviews
{
[super layoutSubviews];
[uploadArea addBottomBorderWithHeight:1.f andColor:[ColorUtility basicGrayLineColor]];
[myUploadArea addBottomBorderWithHeight:1.f andColor:[ColorUtility basicGrayLineColor]];
}
实现动画效果
用以下的代码可以配合Masonry实现动画
[switchBar mas_remakeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(@0)
make.bottom.equalTo(@0)
make.width.equalTo(toupiaoBtn)
make.height.equalTo(@2)
}]
[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
[switchBar layoutIfNeeded]
} completion:nil]
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
2. **创建自定义Cell**:创建一个继承自UITableViewCell的子类,如`AutoHeightCell`,在这个子类中初始化并配置子视图。 3. **设置约束**:在`AutoHeightCell`的`layoutSubviews`方法中,使用Masonry添加约束。例如...
本文将深入探讨如何利用Masonry.js来实现这一特效,并提供源码分析和实际应用技巧。 首先,我们需要理解Masonry的核心概念。Masonry布局的基本原理是将元素视为不同大小的砖块,这些砖块会自动填充到页面的每一行中...
Masonry的官方文档详细介绍了如何安装、配置和使用这个库。它包含了各种参数的解释,如`gutter`(列间距)、`isFitWidth`(是否自适应宽度)等,以及如何更新布局、添加或删除元素等操作。文档还提供了丰富的示例...
Bootstrap选项卡与Masonry插件的结合是一种常见的前端布局技巧,用于创建美观且响应式的网页。Bootstrap是一个广泛使用的前端框架,提供了丰富的UI组件,其中包括选项卡组件,它可以帮助用户组织和展示内容,使得...
这涉及到对`UICollectionViewDataSource`和`UICollectionViewDelegate`的理解,以及对`Masonry`的约束设置技巧的掌握。通过学习这个示例,开发者可以更好地理解和应用自适应布局,提升iOS应用的用户体验。
在这个主题中,我们聚焦于使用Modernizr、Masonry以及CSS3 Animation来实现8种炫酷的jQuery瀑布流效果。 首先,Modernizr是一个JavaScript库,它检测浏览器对HTML5和CSS3新特性的支持程度。通过这个库,开发者可以...
在iOS应用开发中,为了实现更具吸引力的用户体验和增加收入,开发者经常会在应用程序启动或特定时刻展示广告。...通过学习和实践这个案例,开发者可以更好地掌握iOS中的自定义广告实现技巧,提高应用的商业价值。
2. **算法设计**:实现马赛克布局的核心在于一个智能算法,它可以计算每个元素的位置。通常,这涉及到对元素宽度、高度的计算,以及对剩余空间的分配。一个常见的算法是基于宽度优先的策略,先尝试填充一行,然后再...
例如,在界面中有一个按钮,希望在iPhone 6及以上尺寸的屏幕上显示,而在较小的屏幕上不显示。这时就可以设置一个可选约束,仅在屏幕足够大的时候才激活该约束。 ##### 3. 自动布局与Autoresizing Masks的关系 在...
2. **CSS Grid Masonry布局**:CSS Grid提供了`grid-auto-flow`属性,可以设置为`dense`,这样浏览器会尝试优化网格项的放置,使得空白区域最小化,从而达到类似Masonry的效果。然而,这种方法仍然可能需要...
但通过一些技巧,我们可以让`CALayer`也能享受到类似AutoLayout的功能。本篇文章将探讨两种优雅地实现`CALayer` AutoLayout的方法。 方法一:使用NSLayoutConstraint + Category 首先,我们可以创建一个`CALayer`...
总的来说,“仿qq 通讯录”项目是一个很好的学习资源,它涵盖了iOS开发中的关键知识点,如UITableView的使用、Masonry的布局技巧、数据管理以及用户交互设计。对于想要提升iOS开发技能的开发者来说,这是一个值得...
2. 添加约束:当创建UILabel、UITextView等文本视图时,我们可以使用Masonry的`makeConstraints`方法来添加约束。例如,为一个UILabel添加约束,使其居中并填充父视图: ```swift let label = UILabel() view....
而Masonry则是一个强大的Auto Layout库,用于简化界面布局的代码。结合这两个库,你可以轻松地创建瀑布流布局。 首先,你需要在UICollectionViewCell中添加UIImageView,并使用Masonry来设置约束。利用Masonry的`...
在瀑布流布局中,每个元素(通常为图片)的宽度是固定的,但高度不固定,相邻元素之间的间距通常很小或者没有,这样就形成了一个连续的、错落有致的布局。当用户滚动页面时,新的元素会像流水一样自然地填充到已有的...
【基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流】 在这个教程中,我们将探讨如何在.NetCore开发的博客项目...无论你是.NetCore新手还是经验丰富的开发者,都能从这个系列教程中学习到实用的技巧和最佳实践。
在上面的例子中,开发者创建了一个黄色背景的`_bottomView`,并使用Masonry库来设置约束。通过`make.bottom.equalTo(self.mas_bottomLayoutGuide)`,视图的底部被约束到了当前视图控制器的`bottomLayoutGuide`底部,...
这通常涉及到两个步骤:一是计算列的数量,二是确定每个元素在列中的位置。这个过程可能需要考虑窗口的大小变化,以实现响应式设计。 为了实现动态加载效果,我们可以监听浏览器的滚动事件,当用户滚动到页面底部时...
在本资源中,我们关注的是使用jQuery库来实现一个无限滚动加载的图片瀑布流效果。...通过学习这个源码,开发者可以深入理解动态内容加载、DOM操作以及JavaScript动画等方面的技巧,进一步提升自己的前端开发技能。
在Android开发中,GridView是一种非常常用的布局方式,它允许我们以网格的形式展示数据。这个"gridlayout的例子...这个小demo对于学习Android UI设计和布局管理是非常有价值的,可以帮助开发者掌握更高级的布局技巧。