                 expect(aView.frame).to(equal(CGRect(x: 250.0, y: 250.0, width: 100.0, height: 120.0)))
             }
             
+            it("should adjust the aView") {
+                aView.pin.hCenter(50%).vCenter(50%)
+                expect(aView.frame).to(equal(CGRect(x: 300, y: 340, width: 200.0, height: 120.0)))
+            }
+        }
+
+        describe("the result of top&bottom percent margins when the hCenter and vCenter are specified") {
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).vCenter(100).margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 200.0, y: 240.0, width: 200.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).vCenter(100).width(100).pinEdges().marginTop(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 250.0, y: 250.0, width: 100.0, height: 120.0)))
+            }
+
             it("should adjust the aView") {
                 aView.pin.hCenter(50%).vCenter(50%)
                 expect(aView.frame).to(equal(CGRect(x: 300, y: 340, width: 200.0, height: 120.0)))

                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 100.0)))
            }
        }
        
        //
        // bottom & height

                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
            }
        }

        describe("the result of left&right percent margins when the left coordinate and the width are specified") {
            it("should adjust the aView") {
                aView.pin.left(140).width(100).margin(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).pinEdges().margin(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 80.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).pinEdges().marginLeft(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 90.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).pinEdges().marginRight(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 100.0, width: 90.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).pinEdges().marginLeft(2.5%).marginRight(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 80.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).pinEdges().marginHorizontal(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 80.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).marginLeft(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).marginRight(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 100.0, width: 100.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.left(140).width(100).marginHorizontal(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
            }
        }
        
        describe("the result of left&right margins when the right coordinate and the width are specified") {
            it("should adjust the aView") {
