Comments (8)
I would love to see a similar ASCII
API. It is by far one of the (only? ) good things about AL.
from reactivecocoalayout.
It occurs to me that declarative layouts could perhaps be done with macros too. For example, the above specification could maybe be expressed as something like:
H(8, firstView, 20, secondView, 8)
There's some readability lost, but, in exchange, we'd get:
- Compile-time expression validity checks. An invalid expression won't compile. (Of course, there are still ways to specify logically invalid layouts that fail at runtime.)
- No messy view or metrics dictionaries. All values would be literals, or direct variable/constant references.
from reactivecocoalayout.
So, one of the big problems with the ideas so far (and AL's ASCII art too) is that you can only specify layouts in one direction at a time. I'd be interested in any ideas people have to incorporate both dimensions somehow.
from reactivecocoalayout.
I've always wanted to be able to do something like this in AL, visual format:
@"H:|-(8)-[firstView]-(20)-[secondView]-(8)-|, V:|[firstView]|, V:|[secondView]"
Not sure how that would translate into a macro though.
from reactivecocoalayout.
I don't think that really solves the 2D problem, not least because it's not any more readable than doing that same thing over a few lines.
Essentially, using RCL, a view's complete frame should be specified from the signal that it's bound to. You shouldn't bind the X and Y axes separately. Although it might work, it would result in a lot of overhead as the property mutates twice for most triggers.
from reactivecocoalayout.
Ah understood. In that case, then we could look at having a 2D ASCII art representation, but that's also going to be hard to do in a macro.
from reactivecocoalayout.
I'm doing something similar with my iOS animation manager library Anim. I'm using a declarative ASCII
like approach that uses NSArrays instead of strings to sequence stuff. You can drop in simple NSNumber literals like @2.3
for delays.
from reactivecocoalayout.
rentzsch/AutoLayoutShorthand might be good to look at while doing this.
It also occurred to me that nested macros (like EXTADT) could accomplish a lot of this with some additional static verification.
from reactivecocoalayout.
Related Issues (20)
- when I set rcl_top , why the height and width changed ? HOT 1
- Add Carthage compatibility badge to the README
- Split animation behaviors into a separate library HOT 3
- Concat after animation HOT 1
- -rcl_frameSignal etc al should complete on object dealloc HOT 1
- NSView.rcl_baselineSignal does not update
- ld: library not found for -lReactiveCocoaLayout iOS HOT 1
- Add bootstrap and cibuild scripts
- Where is rcl_center? HOT 4
- Why can't I do both alignTop and alignRight? HOT 2
- Why can't I use signals that return constant numbers in my layout chain? HOT 9
- ResizingWindow demo has a lot of layer-backing artifacts HOT 1
- ResizingWindow throws exceptions if the window is sized too small
- A signal equivalent to AVMakeRectWithAspectRatioInsideRect ? HOT 6
- (NS | UI)EdgeInsets operators HOT 6
- Equally Space Views HOT 2
- CGRectInset() returning NaN values HOT 9
- Adopt the Flexbox spec. It's been much improved over the past year. HOT 2
- Create New Tag HOT 3
- RCL doesn't respect `flipped` coordinate space? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reactivecocoalayout.