1. 程式人生 > >iOS masonry動態約束控制元件位置

iOS masonry動態約束控制元件位置

#import "FourViewController.h"
#import "View+MASAdditions.h"
#import "FiveViewControllerr.h"
#define WS(weakSelf)  __weak __typeof(&*self)weakSelf = self;
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
static NSString const*[email protected]"FourViewController";
static NSString const*

[email protected]"FourViewController";

@interface FourViewController ()
@property (strong, nonatomic)  UIButton *move;
@property (strong, nonatomic)  UIButton *back;
@property (strong, nonatomic)  UIImageView *imageView;
@property (assign, nonatomic) int s;
@end

@implementation FourViewController
+ (instancetype)createViewControllerWithStoryboard:(id)createArgs{
    UIStoryboard *storyboard=[UIStoryboard storyboardWithName:(NSString *)kStoryboardName bundle:nil];
    FourViewController *vc=[storyboard instantiateViewControllerWithIdentifier:(NSString *)kIdentifier];
    return vc;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    [self initRightItem];
    _s=10;
    [self initFirstContraints];
}
- (void)initFirstContraints{
    //WS(ws);
//    UIView *view=[UIView new];
//    view.backgroundColor=[UIColor brownColor];
//    [self.view addSubview:view];
//    [view mas_makeConstraints:^(MASConstraintMaker *make) {
//        make.left.equalTo(self.view).with.offset(0);
//        make.size.mas_equalTo(CGSizeMake([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height));
//    }];
    //int width=([UIScreen mainScreen].bounds.size.width-_s*2-10)/2;
    
    _move=[[UIButton alloc]init];
    _move.backgroundColor=[UIColor blueColor];
    [self.view addSubview:_move];
    [_move mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view).with.offset(_s);
        make.top.equalTo(self.view).with.offset(100);
        make.width.equalTo(@150);
        make.height.equalTo(@40);
    }];
    [_move addTarget:self action:@selector(moveFrame) forControlEvents:UIControlEventTouchUpInside];
    [_move setTitle:@"移動圖片" forState:UIControlStateNormal];
    
    _back=[[UIButton alloc]init];
    _back.backgroundColor=[UIColor greenColor];
    [self.view addSubview:_back];
    [_back mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.view).with.offset(-_s);
        make.top.equalTo(self.view).with.offset(100);
        make.width.equalTo(@150);
        make.height.equalTo(@40);
    }];
    [_back addTarget:self action:@selector(backFrame) forControlEvents:UIControlEventTouchUpInside];
    [_back setTitle:@"圖片回來" forState:UIControlStateNormal];
    
    _imageView=[[UIImageView alloc]init];
    _imageView.image=[UIImage imageNamed:@"move"];
    [self.view addSubview:_imageView];
    [_imageView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view).with.offset(_s);
        make.top.equalTo(self.view).with.offset(200);
        make.width.equalTo(@150);
        make.height.equalTo(@150);
    }];
}
- (void)moveFrame{
    _s=_s+5;;
    NSLog(@"_s:%d",_s);
    [_imageView mas_updateConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view).with.offset(_s);
        make.top.equalTo(self.view).with.offset(200+_s);
        make.width.equalTo(@150);
        make.height.equalTo(@150);
    }];
}
- (void)backFrame{
    _s=_s-5;;
    NSLog(@"_s:%d",_s);
    [_imageView mas_updateConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view).with.offset(_s);
        make.top.equalTo(self.view).with.offset(200-_s);
        make.width.equalTo(@150);
        make.height.equalTo(@150);
    }];
}
- (void)initRightItem{
    [self setTitle:@"動態改變控制元件位置"];
    UIBarButtonItem *right=[[UIBarButtonItem alloc]initWithTitle:@"多約束" style:UIBarButtonItemStylePlain target:self action:@selector(right)];
    self.navigationItem.rightBarButtonItem=right;
}
- (void)right{
    FiveViewControllerr *vc=[FiveViewControllerr createViewControllerWithStoryboard:nil];
    [self.navigationController pushViewController:vc animated:YES];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}


相關推薦

iOS masonry動態約束控制元件位置

#import "FourViewController.h" #import "View+MASAdditions.h" #import "FiveViewControllerr.h" #define WS(weakSelf)  __weak __typeof(&

android 動態改變控制元件位置和大小

動態改變控制元件位置的方法: setPadding()的方法更改佈局位置。 如我要把Imageview下移200px:             ImageView.setPadding( ImageView.getPaddingLeft(),  ImageView.get

Android開發FrameLayout動態新增控制元件位置問題

       首先FrameLayout的子控制元件預設都是從左上角顯示的,還有最後新增的在最前面顯示。         一般是對FrameLayout.LayoutParams params進行操作

Android動態新增控制元件約束位置

用LayoutParams: RelativeLayout insertLayout = (RelativeLayout)view1.findViewById(R.id.screen);//screen是一個RelativeLayout 佈局的id ImageView imgApple2 = new

android 動態控制控制元件位置 控制元件位置為點選位置

需求:進度圈顯示在手指點選位置 裝置:平板 解決辦法:將點選事件獲取到的位置(MotionEvent e)與控制元件設定位置建立聯絡 在網上找了很多都沒有解決問題,下面程式碼為自己摸索得到的解決辦法,可能不實用於所有,但已解決我的需求 main.setOnTouchListener

android 在java程式碼中動態設定控制元件位置和設定片大小

需要動態改變佈局裡面控制元件的相對位置 如: 1.改變RelativeLayout佈局裡面某個控制元件的layout_toLeftOf 的屬性 RelativeLayout.Layoutparams params = (RelativeLayout.LayoutParams)view

ios 中使用xib拖拽的scrollview中子控制元件位置偏移

1.問題描述:在xib中拖拽了一個scrollview,並且為之添加了約束,然後從xib中例項化了自定義view新增到scrollview後,發現這個自定義view的子控制元件位置都偏移了。 2.問題

HorizontalScrollView動態新增控制元件並可以移動到點選的控制元件位置

點選“第4期”後的效果圖為 程式碼: mScrollView = (HorizontalScrollView)findViewById(R.id.scroll_view); mLinear = (LinearLayout)findViewById(R.id.line

ios 通過設定UI控制元件的center和size來設定位置時需注意!

<iframe id="iframeu848856_0" src="http://pos.baidu.com/mccm?rdid=848856&amp;dc=2&amp;di=u848856&amp;dri=0&amp;dis=0&amp;dai=2&

VB.NET 控制元件位置隨窗體變化動態改變

第一次遇到這個問題,網上找了找方法,發現設定控制元件的Anchar屬性,基本上可以解決位置自動改變的問題. 點選Anchor下拉箭頭,在彈出的小視窗中,點選上下左右4個矩形,以便對控制元件進行定位. 如下圖,該控制元件定位與視窗的右上方.當視窗大小變化時,它會隨著上方和右

執行時動態移動控制元件位置和改變控制元件的尺寸

Delphi的TCustomForm留有一個為IDE的視覺化設計的用的介面Designer. Designer是IDesignerNotify, IDesignerHook 介面. 我在這裡實現了這些介面. 程式不用做任何改動,只要調函式BeginDesign就可以開始像I

關於android 中控制元件位置動態設定的問題

1:動態建立一個控制元件,比如WebView WebView m_mWbView = new WebView(getApplication()); 2:設定layout 引數,使用FrameLayout ,其他的好像動態設定位置都無效 ..... ViewGroup mVi

android動態設定控制元件的大小和位置

本次做的是機頂盒上視訊播放器,當視訊播放控制元件的大小先在xml檔案設定完成。 當點選視訊控制元件時,使視訊為全屏播放,此時 RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams

iOS開發學習筆記 -- (二)動態新增控制元件和事件處理

剛開始學iOS開發的時候,經常要跟interface builder打交道,乍一看拖控制元件是挺方便的,跟以前做C#開發類似,但是Xcode比較噁心的一點是,拖完控制元件之後,還得手動地在Connections Inspector中繫結控制元件和變數的關係,事件的繫結也在這

ios -- Masonry 更新約束

nts constrain off ios rain height spa sep pre [self.speakerButton mas_remakeConstraints:^(MASConstraintMaker *make) { make.l

iOS masonry新增約束之後 新增layer

我們用masonry約束的時候其實並沒有給控制元件一個具體的frame,所以呼叫 view.frame都是CGRectZero 所以新增layer的時候總是看不到效果,只需要把新增layer的程式碼放在下面方法即可: -(void)layoutSublayersOfLayer:(CALa

IOS版App的控制元件元素定位

前言 Android版App的控制元件元素可以通過Android studio自帶的工具uiautomatorviewer來協助定位! IOS版App的控制元件元素可以通過Appium來實現(未實現),或app-inspector來實現,在此記錄app-inspector的使用 安裝 一、安裝Node

VC中自動改變控制元件位置和大小的對話方塊類

lxDialog.h檔案: ///////////////////////////////////////////////////////////////////////////////////// // 自動改變控制元件位置和大小的對話方塊類 // 檔名:lxDialog.h //

動態建立控制元件的序列化與反序列化

 public Button   Btn = new Button(); //序列化儲存 savedButton = XamlWriter.Save(Btn); //反序列化 還原 if (!string.IsNullOrEmpty(savedButton

安卓動態新增控制元件_向LinearLayout中增加控制元件

背景:        在有些情況下,需要通過程式碼自動向頁面內增加控制元件,而不是事先在xml檔案中寫好。本文介紹向LinearLayout中增加控制元件。 解決方案:     1.新增單個控制元件樣例       LinearLayout layout = find