載入XIB繪製的頁面時的注意事項
問題如下:
筆者為了省事,在開發某個頁面時是通過xib直接畫的頁面,然後在真機執行時為了讓該頁面適配不同機型所以在
xxx = [[[NSBundlemainBundle] loadNibNamed:@"xxx"owner:selfoptions:nil] firstObject];
之後設定xxx的frame,
xxx.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight);
但是xxx頁面上有個控制元件需要設定半圓角,於是筆者在xxx類的.m裡面的 awakeFromNib方法做了如下操作
- (void)awakeFromNib {
[super
// Initialization code
//TODO:uiview 單邊圓角或者單邊框
UIBezierPath *maskPath = [UIBezierPathbezierPathWithRoundedRect:_alert_view.boundsbyRoundingCorners:(UIRectCornerBottomRight | UIRectCornerBottomLeft) cornerRadii:CGSizeMake(5,5)];//圓角大小
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame
maskLayer.path = maskPath.CGPath;
_alert_view.layer.mask = maskLayer;
//解決不同機型介面上還是頑固的顯示xib上的尺寸大小
self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.translatesAutoresizingMaskIntoConstraints = YES;
}
備註:_alert_view設定了約束距離螢幕左右兩邊均為15
由於xib繪製頁面時螢幕寬度是5s的寬度,當該頁面在iPhoneX上執行時_alert_view
究其原因是因為在xxx = [[[NSBundlemainBundle] loadNibNamed:@"xxx"owner:selfoptions:nil] firstObject];時就執行了awakeFromNib該方法,由於設定半圓角程式碼
askLayer.frame = _alert_view.bounds;
maskLayer.path = maskPath.CGPath;
_alert_view.layer.mask = maskLayer;
的原因針對_alert_view改變了其frame,此時在設定
xxx.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight);
想改變xxx的frame進而通過約束想改變_alert_view的frame已經無法生效,因此解決方法就是把設定半圓角的程式碼延遲執行
[selfperformSelector:@selector(layoutMyCorner) withObject:nilafterDelay:.0];
這樣在整個頁面載入完畢frame已經設定正確 在執行設定圓角的程式碼就可以解決上述問題
相關推薦
載入XIB繪製的頁面時的注意事項
問題如下:筆者為了省事,在開發某個頁面時是通過xib直接畫的頁面,然後在真機執行時為了讓該頁面適配不同機型所以在xxx = [[[NSBundlemainBundle] loadNibNamed:@"xxx"owner:selfoptions:nil] firstObject
js 設定定時重新整理頁面的注意事項
<script type="text/javascript"> function dtime(){ setInterval(sub, 120000);//2min一次 } function sub(){ document.getElementById("fr
Android Sqlite資料庫升級時注意事項
在app版本升級時,同時升級了Sqlite資料庫的版本號的話,如果需要保留之前的資料,需要在onUpgrade方法中做處理。這裡記錄一下在onUpgrade處理升級的時候的一些注意事項。 先看下常用的SQLiteOpenHelper的方法: public class Database
.NET MVC和.NET WEB api混用時注意事項
1、同時配置了mvc路由和api路由時,mvc路由無法訪問(呼叫所有mvc路由全部404錯誤) 在Global.asax中,需注意路由註冊的順序,將api路由註冊放在最後: 即將 void Application_Start(object sender, EventArgs e)
vue之watch監聽物件或者一個值時注意事項(深度觀察deep:true慎用!)
vue中想在某個值改變的時候能夠做一些其他事情,可以使用其提供的監聽機制,使用watch。注意,本篇不講技術問題,只是講解如何應用,因為筆者也是一個前端的小白 例:經手專案中就有使用,截圖如下: 下面來分析上面分別是怎樣實現監聽的: 其實除了畫紅線的地方,別的都沒什
Vue做微商城spa頁面的注意事項
Tips: (1)使用者註冊的許可權以及流程 (2)遊客的許可權 (3)支付頁面,分享頁面 為了微信sdk的使用 單獨獨立了專案外寫新的頁面(ios的瀏覽 會造成url的錯誤) (4)頁面一定注意元件的使用 每一個元件對應相應的單獨的功能 單獨的功能展示獨立出單
安裝windows和ubuntu雙系統時,安裝ubuntu時注意事項
1.允許安裝第三方軟體圖形、硬體以及是否聯網更新(可選也可不選) 2.引導驅動裝置應選全盤即/dev/sda即可------這是Ubuntu的grub2引導;如果將引導驅動裝置放入分好的/boot區,則是由Windows引導。 3.當更新windows或者Ubuntu時,造成開機無法進入即找不到引導
ovirt掛載多儲存環境時注意事項
我的測試環境如下 default資料中心+default叢集+NFS儲存 default叢集有node1和node2 新建FC叢集,並加入node3,然後掛載fc儲存 node1和node2沒有hba卡,並未連線到儲存,隸屬於不同叢集,但還是會報錯,看來儲存在同一資料中心
使用Spring + quartz叢集持久化時注意事項
1、持久化時未序列化異常 java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property '
mybatis寫xml時注意事項
mybatis寫xml時注意事項: 1. 如果資料庫欄位中有關鍵字,使用`關鍵字`,最好是隻要是欄位就用``符號,可以減少很多錯誤 2. 如果更新的欄位中有 時間戳,更新時,使用如下(加上jdbcType可以防止出錯): <if test="updateTime !=null"> &
[iOS 載入xib卡頓/慢/延時]程式第一次啟動,載入xib檔案延時3-5秒問題
遇到的問題: 在程式第一次啟動好以後, 第一次 無論是 push 或者 presentViewController 或者tabBar 切換檢視 (這裡的每個VIewController 都是由xib檔案構成) 都有一個情況出現, 就是在觸發這些方法以後,
JAVA中在main函式中呼叫變數時注意事項
在下面這段程式碼中會報錯 [java] view plain copy print?System.out.println(s1); System.out.println(s1);Cannot make a static reference to the non-static field s1 只要把
適配平板和手機端時注意事項
在適配平板和手機佈局時,經常會建立幾種不同的佈局。完了執行時butterknife會報空指標,用死方法一個個抓到最後才指向 Caused by: java.lang.IllegalStateException: Required view 'ivGoodListStyle'
$.each key值相同時注意事項
如果 key的值相同的話,會輸出後面的value值。 var trdate={"姓名":"張三","姓名":"李四","姓名":"王五","姓名":"趙六","姓名":"小七"}; var i=0; $.each(trdate,function(key,valu
使用DecimalFormat時注意事項
DecimalFormat ff=new DecimalFormat("#,###,###.######"); 綠色區域為保留的小數位數(四捨五入)----但不會保
公開aidl介面給外部apk呼叫時注意事項
當我們寫的一個service通過aidl公開介面給外部第三方應用時,通常的做法是會將aidl以及對應java檔案打成jar包,以供第三方的app使用。這樣做沒有任何問題,但要注意的是在後續升級這個介面的時候,得保持介面中方法順序不變,即只能在aidl的後面新增新方法,而不能
前端_頁面重構注意事項
頁面重構要注意一下幾點: 不濫用id,儘量用class代替id。CSS選擇器最好控制在2-3個以內,不要使用內聯樣式,轉移到樣式表中。根據上下結構命名id和class,而不是設計元素,避免html結構
struts2接收javabean物件時注意事項
struts2在接收javabean物件的時候,action的中的屬性既要有get方法也要有set方法,不然只能接收到一個屬性。 示例如下: xtype: 'form', itemId : '
Go 多變數賦值時注意事項
說到多變數賦值時,先計算所有相關值,然後再從左到右依次賦值,但是這個規則不適用於python我們來看一例: package main import "fmt" func main() { data, i := [3]string{"喬幫主","慕容復","鳩摩智"}, 0 i, data
載入帶有手勢識別器的XIB檔案時的注意事項
首先新建一個繼承自UIView的類,並建立相應的XIB檔案 #import <UIKit/UIKit.h> @interface ZHDemoView : UIView + (instancetype)demoView; @end 提供一個類方法以供快速建立當