Skip to content
Builds to collapse a view and its relevant layout constraints, simulating a "Flow Layout" mode
Branch: master
Clone or download
Latest commit 5cf1ddd Apr 24, 2015
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Classes make it possible to set "fd_collapsibleConstraints" by codes Apr 23, 2015
Demo fix a constraint warning Apr 23, 2015
Sceenshots
UIView+FDCollapsibleConstraints.xcworkspace
.gitignore
LICENSE Initial commit Apr 14, 2015
README.md
UIView+FDCollapsibleConstraints.podspec

README.md

UIView-FDCollapsibleConstraints

forkingdog

Overview

UIView+FDCollapsibleConstraints builds to collapse a view and its relevant layout constraints, simulating a "Flow Layout" mode.

Demo 1

This demo collapses the forkingdog image view and its bottom margin constraint.

view demo

Demo 2

This demo collapses diffent components in cell, according to its data entity, each margin handles right as well.

cell demo

Basic usage

1. Select constraints to collapse

First, tell which constraints will be collapsed when the view collapses. We provide a IBOutletCollection to make it easier in Interface Builder:

@property (nonatomic, copy) IBOutletCollection(NSLayoutConstraint) NSArray *fd_collapsibleConstraints;

You can assgin it by codes, but it's better to "connect lines" in Interface Builder:

connecting lines

2. Collapse a view

Selected constraints will collapse when:

view.fd_collapsed = YES;

collapsed

And expand back when:

view.fd_collapsed = NO;

recovered

Auto collapse

Not every view needs to add a width or height constraint, views like UILabel, UIImageView have their Intrinsic content size when they have content in it. For these views, we provide a Auto collapse property, when its content is gone, selected constraints will collapse automatically.
You can enable auto collapse by:

label.fd_autoCollapse = YES;
imageView.fd_autoCollapse = YES;

And it will work as you expect:

label.text = nil/*or @""*/; (auto => label.fd_collapsed = YES)
label.text = @"forkingdog"; (auto => label.fd_collapsed = NO)
imageView.image = nil; (auto => imageView.fd_collapsed = YES)
imageView.image = [UIImage imageNamed:@"forkingdog"]; (auto => imageView.fd_collapsed = NO)

We've also offered a Interface Builder friendly way to enable auto collapse:

@property (nonatomic, assign, getter=fd_autoCollapse) IBInspectable BOOL autoCollapse;

Here's what you may find in Attribute Inspector

auto collapse

It's behavior is same as setting fd_autoCollapse property in code.

Installation

Cocoapods:

pod search UIView+FDCollapsibleConstraints

License

MIT

You can’t perform that action at this time.