[iOS] swift 취소선 표시

잘 표시되던 취소선이 어느날 갑자기 안나오기 시작했다.

아마도 iOS 10.3 이후부터 먼가 바껴서 생긴 문제 같다.

다음과 같이 수정하면 취소선 표시 가능하다


let attributes = [
            NSForegroundColorAttributeName : UIColor.init(hex: "#252525"),
            NSBaselineOffsetAttributeName: 0, // 아주 중요 - 이게 없으면 표시 안됨
            NSStrikethroughStyleAttributeName : 1] as [String : Any]
        let attributeString = NSAttributedString(string: "\(StringUtil.intToCommaString(giftProductVo.originPrice))원", attributes: attributes) //1
        cell.lblPromotionProductOriginalPrice.attributedText = attributeString

사용자 삽입 이미지

Posted by incree

2017/07/10 14:08 2017/07/10 14:08
, , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/381

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


Android Studio에서 다음지도 샘플예제를 genymotion이나 avd에서 실행하려고 하면 


사용자 삽입 이미지

이와 같은 메시지가 뜨면서 앱이 설치가 되지 않는다.


4:Run 탭의 로그를 보면 아래와 같이 설치할 수 없다는 에러를 확인할 수 있다


04/05 18:41:39: Launching app
$ adb push X:\Android_DaumMap_Sample_1.2.19.0\Android_DaumMap_Sample_1.2.19.0\app\build\outputs\apk\app-debug.apk /data/local/tmp/net.daum.android.map.openapi.sampleapp
$ adb shell pm install -r "/data/local/tmp/net.daum.android.map.openapi.sampleapp"
    pkg: /data/local/tmp/net.daum.android.map.openapi.sampleapp
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]




$ adb shell pm uninstall net.daum.android.map.openapi.sampleapp
$ adb shell pm install -r "/data/local/tmp/net.daum.android.map.openapi.sampleapp"
    pkg: /data/local/tmp/net.daum.android.map.openapi.sampleapp
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]






이럴 경우에는 build.gradle 파일을 수정해서 해결할 수 있다


아래 빨간 내용을 android {} 내에 추가하면 된다.
(INSTALL_FAILED_NO_MATCHING_ABIS 로 구글에서 검색하면 많이 나오는 내용)




build.gradle
...........
android {
...........
...........
splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}

}


** 네이버, 구글 지도 샘플 예제는 별도의 수정없이 바로 설치 실행 가능하다.

Posted by incree

2017/04/05 18:56 2017/04/05 18:56
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/380

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[iOS] xcode error



다른 컴퓨터에서 프로젝트를 복사해와서 작업할때


xcode 컴파일시 다음과 같은 오류가 발생할수 있다.

file:///Users/username/Documents/project/myproject/Pods/Alamofire/Source/Stream.swift: warning: Missing file: /Users/username/Documents/project/myproject/Pods/Alamofire/Source/Stream.swift is missing from working copy

  "protocol descriptor for SMSwipeableTabView.SMSwipeableTabViewControllerDelegate", referenced from:

  "SMSwipeableTabView.SMBackgroundColorAttribute.unsafeMutableAddressor : Swift.String", referenced from:


  "SMSwipeableTabView.SMBackgroundColorAttribute.unsafeMutableAddressor : Swift.String", referenced from:


  "direct field offset for SwiftValidator.ValidationError.errorMessage : Swift.String", referenced from:


……………………………………….

Undefined symbols for architecture arm64




이럴 경우 Xcode DerivedData 디렉토리 내의 모든 파일을 삭제하고 다시 컴파일 하면 정상작동한다


cd /Users/username/Library/Developer/Xcode/DerivedData

rm -rf *

Posted by incree

2017/03/22 12:45 2017/03/22 12:45
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/379

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


Daum map에 Custom Marker 넣기

안드로이드앱에 다음 지도를 넣고 지도에 커스텀 마커를 표시하려고 할때

다음에서 제공하는 샘플앱을 그대로 따라하면 에러나면서 앱이 죽어버린다.

로그캣에 알수없는 오류 내용만 뱉어내고 죽기 때문에 오류 내용으로는 원인을 찾기가 어렵다.

샘플앱에 있는 "키워드 장소검색"은 정상 작동하기 때문에 서로 어떤 차이가 있는지 비교해서 오류를 해결했다.


에러가 나는 코드가
mapView.addPOIItem(mCustomMarker);
mapView.selectPOIItem(mCustomMarker, true);

mapView.setMapCenterPoint(CUSTOM_MARKER_POINT, false);


이 부분인데, 오류의 원인은 결론적으로 맵이 초기화 되기 전에 이 메소드들이 호출돼 발생하는 것이었다.


따라서 이 코드들이 맵이 초기화 완료된 후(onMapViewInitialized) 에 호출되도록 수정하면 된다.




다음 샘플앱 소스
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.demo_nested_mapview);
    mMapView = (MapView) findViewById(R.id.map_view);
    mMapView.setDaumMapApiKey(MapApiConst.DAUM_MAPS_ANDROID_APP_API_KEY);
    mMapView.setMapViewEventListener(this);
    mMapView.setPOIItemEventListener(this);

    // 구현한 CalloutBalloonAdapter 등록
    mMapView.setCalloutBalloonAdapter(new CustomCalloutBalloonAdapter());
    createDefaultMarker(mMapView);
    createCustomMarker(mMapView);
    createCustomBitmapMarker(mMapView);
    showAll();
}

@Override
public void onMapViewInitialized(MapView mapView) {

}


이와 같이
createDefaultMarker(mMapView);
    createCustomMarker(mMapView);

    createCustomBitmapMarker(mMapView);
이 메소드들이 onCreate에서 호출하는데

이들을 모두 onMapViewInitialized로 이동하면 된다.


수정된 소스
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.demo_nested_mapview);
    mMapView = (MapView) findViewById(R.id.map_view);
    mMapView.setDaumMapApiKey(MapApiConst.DAUM_MAPS_ANDROID_APP_API_KEY);
    mMapView.setMapViewEventListener(this);
    mMapView.setPOIItemEventListener(this);

    // 구현한 CalloutBalloonAdapter 등록

    mMapView.setCalloutBalloonAdapter(new CustomCalloutBalloonAdapter());
}

@Override

public void onMapViewInitialized(MapView mapView) {
    createDefaultMarker(mMapView);
    createCustomMarker(mMapView);
    createCustomBitmapMarker(mMapView);

    showAll();
}



추가로 라이브러리의 위치가 메뉴얼과 샘플앱이 다르게 표현돼 있는데, 샘플앱과 같은 위치에 두어야 정상작동한다.


샘플앱의 라이브러리 구조
사용자 삽입 이미지




다음 메뉴얼의 라이브러리 구조
http://apis.map.daum.net/android/guide/
사용자 삽입 이미지





그외에 다른 이슈도 있는 것 같은데 다음 url 참조
http://jaysul.blogspot.kr/2015/01/andro ··· %3Fm%3D1




















Posted by incree

2017/03/05 16:26 2017/03/05 16:26
, , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/378

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

정확하게는 재생이 안되는 것이 아니라 재생은 되는데, 화면이 안보일때 해결 방법

webview의 layter type을 softwore로 설정했다면 이를 삭제한다

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

와 같이 설정한 곳이 있으면 삭제 또는 LAYER_TYPE_HARDWARE  로 변경


LAYER_TYPE_SOFTWARE 는 Android version에 따라서 webview 성능 향상을 위해 사용하라는 의견들이 많다







Posted by incree

2017/02/10 05:49 2017/02/10 05:49
, , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/377

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[PHP] Laravel Database Seeding error


Laravel Framework 5.4.4

Database Seeding시에 다음과 같은 에러가 나면

 [InvalidArgumentException]
  Unable to locate factory with name [default] [App\xxxx].

ModelFactory.php 파일에 App\xxxx가 define 으로 설정돼 있는지 확인한다.

\database\factories\ModelFactory.php

Posted by incree

2017/01/27 22:42 2017/01/27 22:42
,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/376

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

[iOS] swift 3.x : UILabel 높이 자동 맞춤


UILabel autosize height

외부 UIView에 Constraints 추가
사용자 삽입 이미지


UILabel에 Constranints 추가 및 Lines 0으로 설정
사용자 삽입 이미지



결과

사용자 삽입 이미지


전체소스 : labelAutoHeight.zip

Posted by incree

2017/01/24 21:29 2017/01/24 21:29
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/375

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

UILabel multiple attributes, UILabel strikethrough text



letstyle1: [String:Any] = [NSForegroundColorAttributeName:UIColor.darkGray,NSFontAttributeName:UIFont.systemFont(ofSize:12),NSStrikethroughStyleAttributeName:NSUnderlineStyle.styleSingle.rawValue,NSStrikethroughColorAttributeName:UIColor.cyan]
       
     
let style2: [String: Any] = [NSForegroundColorAttributeName: UIColor.red, NSFontAttributeName: UIFont(name: "Georgia", size: 25.0)!]
     
     
let style3: [String: Any] = [NSForegroundColorAttributeName: UIColor.blue, NSBackgroundColorAttributeName: UIColor.yellow, NSFontAttributeName: UIFont.boldSystemFont(ofSize: 13), NSUnderlineStyleAttributeName : NSUnderlineStyle.styleSingle.rawValue]
     
     
let style1Text = "회색 12폰트 취소선 cyan"
     
let style2Text = "빨간색 25폰트 폰트지정"
     
let style3Text = "파란색 13폰트 볼드 밑줄 배경 노랑"
     
     
let style1String = NSMutableAttributedString(string: style1Text, attributes: style1)
     
let style2String = NSMutableAttributedString(string: style2Text, attributes: style2)
     
let style3String = NSMutableAttributedString(string: style3Text, attributes: style3)
     
       style1String.
append(style2String)
       style1String.
append(style3String)
     

        lblMultiFontStyle.attributedText = style1String












/**
 * swift 2.x
let style1: [String : AnyObject] = [
                    NSForegroundColorAttributeName: UIColor.darkGrayColor(),
                    NSFontAttributeName: UIFont.systemFontOfSize(12),
                    NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]
                let style2: [String : AnyObject] = [
                    NSForegroundColorAttributeName: UIColor.blackColor(),
                    NSFontAttributeName: UIFont.systemFontOfSize(12)]
                let style3: [String : AnyObject] = [
                    NSForegroundColorAttributeName: ColorUtil.hexStringToUIColor("#AF0A2B"),
                    NSFontAttributeName: UIFont.boldSystemFontOfSize(13)]

                let style1Text = "첫번째 12폰트 취소선 회색"
                let style2Text  = "두번째 12폰트 검은색"
                let style3Text = "세번째 볼드 13폰트 컬러 : AF0A2B"

                let style1String = NSMutableAttributedString(string: style1Text, attributes: style1)
                let style2String = NSMutableAttributedString(string: style2Text, attributes: style2)
                let style3String = NSMutableAttributedString(string: style3Text, attributes: style3)

                style1String.appendAttributedString(style2String)
                style1String.appendAttributedString(style3String)
                lblMultiFontStyle.attributedText = style1String
*/


사용자 삽입 이미지

전체소스 : multiFontStye.zip

Posted by incree

2017/01/24 21:13 2017/01/24 21:13
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/374

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


빠른 시작
https://developers.facebook.com/docs/messenger-platform/guides/quick-start

Webhook 참조
https://developers.facebook.com/docs/messenger-platform/webhook-reference

가이드
https://developers.facebook.com/docs/messenger-platform/guides
Messenger 플랫폼의 핵심 영역에 대해 알아보세요.
  • 빠른 시작 - 10분 안에 실행하는 봇 만들기
  • 설정 - Messenger용 Facebook 앱 및 페이지 구성
  • 대화 - API 및 Webhooks를 사용하여 메시지 주고 받기
  • 진입점 - 사람들이 어떻게 봇과 대화를 시작할 수 있는지 알아보기
  • 결제(베타) - 봇에서 결제를 처리할 수 있음
  • m.me 링크 - m.me 링크에서 리퍼럴을 사용하는 방법 알아보기
  • 계정 연결 - 안전한 방식을 사용하여 웹에서 Messenger 사용자 ID 얻기
  • 분석 - 지표를 활용하여 봇의 성과 확인



Messenger Platform samples for sending and receiving messages. Walk through the Get Started with this code.
https://developers.facebook.com/docs/messenger-platform/quickstart

Posted by incree

2016/11/22 05:03 2016/11/22 05:03
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/373

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


GCM 이용해서 Push Notifications 개발시 아래와 같은 에러가 나는 경우


2016-11-21 13:37:03.136446 ccourt[2223:955954] You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.


Project -> Targets -> Capabilities  에서


Push Notifications 와 Background Modes.Remote notifications 를 ON으로 설정하면 된다


사용자 삽입 이미지

Posted by incree

2016/11/21 14:05 2016/11/21 14:05
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/372

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

« Previous : 1 : 2 : 3 : 4 : 5 : ... 14 : Next »