如何获得使用自动布局的UIView的x,y,宽度,高度

时间:2015-08-26 10:28:49

标签: ios objective-c uiview autolayout calayer

我正在尝试在blue UIView设置掩码,我必须为frame设置掩码,但问题blue UIView正在使用auto layout

如何x, y, width, height UIView auto layout [self.v.layer.mask setFrame:CGRectMake(?, ?, ?, ?)];使用frame来使用此self.v.frame.size.width;

在使用auto layout时使用UIView x, y, width, height属性auto layout是否正确?或者是否有任何其他方法来获取使用String _description = “Some text with rft tags like \\ine , \b, \b01 etc.”; RichTxtDescription.Rft = @"{\rtf1\ansi " + _Description + "\\line \\line Query: \\line .}"; 的{​​{1}}。

请参阅下面的屏幕截图。

enter image description here

2 个答案:

答案 0 :(得分:0)

使用自动布局系统时,您不会获得/设置正确的帧。如果你真的想这样做。您可以使用以下方法

self.myViewWidthConstraint.constant += 20;
[self.myView updateConstraints];

建议您通过更新约束来使用约束来更新视图的大小/位置。

例如:让您查看约束和视图的IBOutlet,然后像这样更新

self.myViewWidthConstraint.constant;

要获得宽度,您应该使用

<?php
  function executeQuery($dbConnection, $Query) {
    $result =  $dbConnection -> query($Query);
    return $result;
  }


  function openDB() {
  $dbConnection=  new mysqli($mServer, $mUser, $mPwd, $mDatabase);
    return $dbConnection;
  }

  // open Database
  $DBconnection=openDB();

  // 1st query
  $query="SELECT *
          FROM `character` c
          WHERE c.id_new IN(
            SELECT c.id_new
            FROM `character` c
            GROUP BY id_new
            HAVING COUNT(id_new) > 1
          )
          ORDER BY id_new ASC;";

  // sent query to database
  $result=executeQuery($DBconnection, $query);
  $numRows=$result->num_rows;

  // do as long as you've got rows
  for(;$numRows>0;$numRows--) {

    // go to next row
    $currentRow=$result->fetch_object();

      $id_new=$currentRow->id;
      $query="UPDATE `character` c
              SET c.class=" .$id_new ."
              WHERE c.id IN(" .$id_new .");";
      echo $query ."\n";
      $result2=executeQuery($DBconnection, $query);
   }
  }

?>

答案 1 :(得分:-1)

当人们谈论不使用具有自动布局的帧时,他们的意思是“不要设置由自动布局处理的帧”,因为自动布局将处理正确设置帧。读取帧的值不是问题。

但请注意,无论何时布局视图,都可以通过自动布局更改帧的值。因此,您可能需要将更新代码放在viewDidLayoutSubviews中,例如:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.blueView.layer.mask.frame = self.blueView.bounds;
}

另请注意,如果您的遮罩层是根据其框架绘制的,则只需在其框架更改时重绘其内容。

相关问题