iOS - changing constraint relation programmatically












7














given the following constraint in ios programmatically:



IBOutlet NSLayoutConstraint *myConstraint;


this constraint is linked in interfacebuilder to the following details:
enter image description here



How do I change the relation attribute programmatically. I tried to look up for a method called setRelation but I don't see it.










share|improve this question




















  • 1




    What are you trying to do by changing the relation? There might be an easier way.
    – chedabob
    May 21 '15 at 18:35
















7














given the following constraint in ios programmatically:



IBOutlet NSLayoutConstraint *myConstraint;


this constraint is linked in interfacebuilder to the following details:
enter image description here



How do I change the relation attribute programmatically. I tried to look up for a method called setRelation but I don't see it.










share|improve this question




















  • 1




    What are you trying to do by changing the relation? There might be an easier way.
    – chedabob
    May 21 '15 at 18:35














7












7








7







given the following constraint in ios programmatically:



IBOutlet NSLayoutConstraint *myConstraint;


this constraint is linked in interfacebuilder to the following details:
enter image description here



How do I change the relation attribute programmatically. I tried to look up for a method called setRelation but I don't see it.










share|improve this question















given the following constraint in ios programmatically:



IBOutlet NSLayoutConstraint *myConstraint;


this constraint is linked in interfacebuilder to the following details:
enter image description here



How do I change the relation attribute programmatically. I tried to look up for a method called setRelation but I don't see it.







ios xcode interface-builder nslayoutconstraint






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 28 '18 at 7:34









Cœur

17.5k9103145




17.5k9103145










asked May 21 '15 at 18:25









j2emanuej2emanue

21.7k24139250




21.7k24139250








  • 1




    What are you trying to do by changing the relation? There might be an easier way.
    – chedabob
    May 21 '15 at 18:35














  • 1




    What are you trying to do by changing the relation? There might be an easier way.
    – chedabob
    May 21 '15 at 18:35








1




1




What are you trying to do by changing the relation? There might be an easier way.
– chedabob
May 21 '15 at 18:35




What are you trying to do by changing the relation? There might be an easier way.
– chedabob
May 21 '15 at 18:35












2 Answers
2






active

oldest

votes


















10














According to the documentation, relation is read-only.



What you will need to do, I suspect, is to set



self.myConstraint.active = NO;


Then make a new NSLayoutConstraint programmatically using:



+ constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:



And in the process copying values you want to keep, and replacing the relation.



Then add it to the view hierarchy where appropriate.






share|improve this answer





























    1














    You can do like that :



      [self.view addConstraint:[NSLayoutConstraint
    constraintWithItem:self.yellowView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:self.redView
    attribute:NSLayoutAttributeWidth
    multiplier:0.75
    constant:0.0]];





    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f30381559%2fios-changing-constraint-relation-programmatically%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      10














      According to the documentation, relation is read-only.



      What you will need to do, I suspect, is to set



      self.myConstraint.active = NO;


      Then make a new NSLayoutConstraint programmatically using:



      + constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:



      And in the process copying values you want to keep, and replacing the relation.



      Then add it to the view hierarchy where appropriate.






      share|improve this answer


























        10














        According to the documentation, relation is read-only.



        What you will need to do, I suspect, is to set



        self.myConstraint.active = NO;


        Then make a new NSLayoutConstraint programmatically using:



        + constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:



        And in the process copying values you want to keep, and replacing the relation.



        Then add it to the view hierarchy where appropriate.






        share|improve this answer
























          10












          10








          10






          According to the documentation, relation is read-only.



          What you will need to do, I suspect, is to set



          self.myConstraint.active = NO;


          Then make a new NSLayoutConstraint programmatically using:



          + constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:



          And in the process copying values you want to keep, and replacing the relation.



          Then add it to the view hierarchy where appropriate.






          share|improve this answer












          According to the documentation, relation is read-only.



          What you will need to do, I suspect, is to set



          self.myConstraint.active = NO;


          Then make a new NSLayoutConstraint programmatically using:



          + constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:



          And in the process copying values you want to keep, and replacing the relation.



          Then add it to the view hierarchy where appropriate.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered May 21 '15 at 18:33









          i_am_jorfi_am_jorf

          44.6k11111205




          44.6k11111205

























              1














              You can do like that :



                [self.view addConstraint:[NSLayoutConstraint
              constraintWithItem:self.yellowView
              attribute:NSLayoutAttributeWidth
              relatedBy:NSLayoutRelationEqual
              toItem:self.redView
              attribute:NSLayoutAttributeWidth
              multiplier:0.75
              constant:0.0]];





              share|improve this answer


























                1














                You can do like that :



                  [self.view addConstraint:[NSLayoutConstraint
                constraintWithItem:self.yellowView
                attribute:NSLayoutAttributeWidth
                relatedBy:NSLayoutRelationEqual
                toItem:self.redView
                attribute:NSLayoutAttributeWidth
                multiplier:0.75
                constant:0.0]];





                share|improve this answer
























                  1












                  1








                  1






                  You can do like that :



                    [self.view addConstraint:[NSLayoutConstraint
                  constraintWithItem:self.yellowView
                  attribute:NSLayoutAttributeWidth
                  relatedBy:NSLayoutRelationEqual
                  toItem:self.redView
                  attribute:NSLayoutAttributeWidth
                  multiplier:0.75
                  constant:0.0]];





                  share|improve this answer












                  You can do like that :



                    [self.view addConstraint:[NSLayoutConstraint
                  constraintWithItem:self.yellowView
                  attribute:NSLayoutAttributeWidth
                  relatedBy:NSLayoutRelationEqual
                  toItem:self.redView
                  attribute:NSLayoutAttributeWidth
                  multiplier:0.75
                  constant:0.0]];






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jul 18 '15 at 11:52









                  Erhan DemirciErhan Demirci

                  3,12332940




                  3,12332940






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f30381559%2fios-changing-constraint-relation-programmatically%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Monofisismo

                      Angular Downloading a file using contenturl with Basic Authentication

                      Olmecas